Updated examples

This commit is contained in:
Dev 2024-10-19 12:56:23 +01:00
parent 60d5a870ad
commit 07483af828
3637 changed files with 23068 additions and 15452 deletions

View File

@ -27,7 +27,7 @@ import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"
import { ISetDialogReadRequestData } from "@spt/models/eft/dialog/ISetDialogReadRequestData";
import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData";
import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData";
import { DialogueInfo } from "@spt/models/eft/profile/ISptProfile";
import { IDialogueInfo } from "@spt/models/eft/profile/ISptProfile";
import { HashUtil } from "@spt/utils/HashUtil";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil";
@ -48,11 +48,11 @@ export declare class DialogueCallbacks implements OnUpdate {
*/
getChatServerList(url: string, info: IGetChatServerListRequestData, sessionID: string): IGetBodyResponseData<IChatServer[]>;
/** Handle client/mail/dialog/list */
getMailDialogList(url: string, info: IGetMailDialogListRequestData, sessionID: string): IGetBodyResponseData<DialogueInfo[]>;
getMailDialogList(url: string, info: IGetMailDialogListRequestData, sessionID: string): IGetBodyResponseData<IDialogueInfo[]>;
/** Handle client/mail/dialog/view */
getMailDialogView(url: string, info: IGetMailDialogViewRequestData, sessionID: string): IGetBodyResponseData<IGetMailDialogViewResponseData>;
/** Handle client/mail/dialog/info */
getMailDialogInfo(url: string, info: IGetMailDialogInfoRequestData, sessionID: string): IGetBodyResponseData<DialogueInfo>;
getMailDialogInfo(url: string, info: IGetMailDialogInfoRequestData, sessionID: string): IGetBodyResponseData<IDialogueInfo>;
/** Handle client/mail/dialog/remove */
removeDialog(url: string, info: IRemoveDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>;
/** Handle client/mail/dialog/pin */

View File

@ -2,6 +2,7 @@ import { LocationController } from "@spt/controllers/LocationController";
import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData";
import { ILocationsGenerateAllResponse } from "@spt/models/eft/common/ILocationsSourceDestinationBase";
import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData";
import { IGetAirdropLootRequest } from "@spt/models/eft/location/IGetAirdropLootRequest";
import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
export declare class LocationCallbacks {
@ -11,5 +12,5 @@ export declare class LocationCallbacks {
/** Handle client/locations */
getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ILocationsGenerateAllResponse>;
/** Handle client/airdrop/loot */
getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGetAirdropLootResponse>;
getAirdropLoot(url: string, info: IGetAirdropLootRequest, sessionID: string): IGetBodyResponseData<IGetAirdropLootResponse>;
}

View File

@ -4,7 +4,7 @@ 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 { IModdedTraders } 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 {
@ -23,5 +23,5 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate {
/** Handle client/trading/api/getTraderAssort */
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
/** Handle /singleplayer/moddedTraders */
getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ModdedTraders>;
getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IModdedTraders>;
}

View File

@ -13,5 +13,6 @@ export declare class WeatherCallbacks {
* @returns IWeatherData
*/
getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IWeatherData>;
/** Handle client/localGame/weather */
getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGetLocalWeatherResponseData>;
}

View File

@ -7,5 +7,7 @@ export declare enum ContextVariableType {
CLIENT_START_TIMESTAMP = 2,
/** When player is loading into map and loot is requested */
REGISTER_PLAYER_REQUEST = 3,
RAID_ADJUSTMENTS = 4
RAID_ADJUSTMENTS = 4,
/** Data returned from client request object from endLocalRaid() */
TRANSIT_INFO = 5
}

View File

@ -11,7 +11,7 @@ import { IBotBase } from "@spt/models/eft/common/tables/IBotBase";
import { IBotCore } from "@spt/models/eft/common/tables/IBotCore";
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 { IBotGenerationDetails } 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";
@ -97,7 +97,7 @@ export declare class BotController {
* @param generateAsPmc Force bot being generated a PMC
* @returns BotGenerationDetails
*/
protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails;
protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): IBotGenerationDetails;
/**
* Get players profile level
* @param pmcProfile Profile to get level from
@ -111,7 +111,7 @@ export declare class BotController {
* @param sessionId Session id
* @returns A promise for the bots to be done generating
*/
protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise<void>;
protected generateWithBotDetails(condition: ICondition, botGenerationDetails: IBotGenerationDetails, sessionId: string): Promise<void>;
/**
* Generate a single bot and store in the cache
* @param botGenerationDetails the bot details to generate the bot with
@ -119,7 +119,7 @@ export declare class BotController {
* @param cacheKey the cache key to store the bot with
* @returns A promise for the bot to be stored
*/
protected generateSingleBotAndStoreInCache(botGenerationDetails: BotGenerationDetails, sessionId: string, cacheKey: string): Promise<void>;
protected generateSingleBotAndStoreInCache(botGenerationDetails: IBotGenerationDetails, sessionId: string, cacheKey: string): Promise<void>;
/**
* Pull a single bot out of cache and return, if cache is empty add bots to it and then return
* @param sessionId Session id
@ -128,7 +128,7 @@ export declare class BotController {
*/
protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise<IBotBase[]>;
protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax;
protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record<string, number>): void;
protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: IBotGenerationDetails, possibleBossTypeWeights: Record<string, number>): void;
/**
* Get the difficulty passed in, if its not "asonline", get selected difficulty from config
* @param requestedDifficulty

View File

@ -7,7 +7,7 @@ import { IGetFriendListDataResponse } from "@spt/models/eft/dialog/IGetFriendLis
import { IGetMailDialogViewRequestData } from "@spt/models/eft/dialog/IGetMailDialogViewRequestData";
import { IGetMailDialogViewResponseData } from "@spt/models/eft/dialog/IGetMailDialogViewResponseData";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { Dialogue, DialogueInfo, ISptProfile, IUserDialogInfo, Message } from "@spt/models/eft/profile/ISptProfile";
import { IDialogue, IDialogueInfo, IMessage, ISptProfile, IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { MessageType } from "@spt/models/enums/MessageType";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
@ -40,14 +40,14 @@ export declare class DialogueController {
* @param sessionID Session Id
* @returns array of dialogs
*/
generateDialogueList(sessionID: string): DialogueInfo[];
generateDialogueList(sessionID: string): IDialogueInfo[];
/**
* Get the content of a dialogue
* @param dialogueID Dialog id
* @param sessionID Session Id
* @returns DialogueInfo
*/
getDialogueInfo(dialogueID: string, sessionID: string): DialogueInfo;
getDialogueInfo(dialogueID: string, sessionID: string): IDialogueInfo;
/**
* Get the users involved in a dialog (player + other party)
* @param dialog The dialog to check for users
@ -55,7 +55,7 @@ export declare class DialogueController {
* @param sessionID Player id
* @returns IUserDialogInfo array
*/
getDialogueUsers(dialog: Dialogue, messageType: MessageType, sessionID: string): IUserDialogInfo[] | undefined;
getDialogueUsers(dialog: IDialogue, messageType: MessageType, sessionID: string): IUserDialogInfo[] | undefined;
/**
* Handle client/mail/dialog/view
* Handle player clicking 'messenger' and seeing all the messages they've recieved
@ -72,7 +72,7 @@ export declare class DialogueController {
* @param request get dialog request (params used when dialog doesnt exist in profile)
* @returns Dialogue
*/
protected getDialogByIdFromProfile(profile: ISptProfile, request: IGetMailDialogViewRequestData): Dialogue;
protected getDialogByIdFromProfile(profile: ISptProfile, request: IGetMailDialogViewRequestData): IDialogue;
/**
* Get the users involved in a mail between two entities
* @param fullProfile Player profile
@ -92,7 +92,7 @@ export declare class DialogueController {
* @param messages Messages to check
* @returns true if uncollected rewards found
*/
protected messagesHaveUncollectedRewards(messages: Message[]): boolean;
protected messagesHaveUncollectedRewards(messages: IMessage[]): boolean;
/**
* Handle client/mail/dialog/remove
* Remove an entire dialog with an entity (trader/user)
@ -125,13 +125,13 @@ export declare class DialogueController {
* @param dialogueId Dialog to get mail attachments from
* @returns Message array
*/
protected getActiveMessagesFromDialog(sessionId: string, dialogueId: string): Message[];
protected getActiveMessagesFromDialog(sessionId: string, dialogueId: string): IMessage[];
/**
* Return array of messages with uncollected items (includes expired)
* @param messages Messages to parse
* @returns messages with items to collect
*/
protected getMessagesWithAttachments(messages: Message[]): Message[];
protected getMessagesWithAttachments(messages: IMessage[]): IMessage[];
/**
* Delete expired items from all messages in player profile. triggers when updating traders.
* @param sessionId Session id
@ -148,7 +148,7 @@ export declare class DialogueController {
* @param message Message to check expiry of
* @returns true or false
*/
protected messageHasExpired(message: Message): boolean;
protected messageHasExpired(message: IMessage): boolean;
/** Handle client/friend/request/send */
sendFriendRequest(sessionID: string, request: IFriendRequestData): IFriendRequestSendResponse;
}

View File

@ -7,9 +7,8 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
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 { IHideoutArea, IStage } 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";
@ -22,8 +21,9 @@ import { IHideoutSingleProductionStartRequestData } from "@spt/models/eft/hideou
import { IHideoutTakeItemOutRequestData } from "@spt/models/eft/hideout/IHideoutTakeItemOutRequestData";
import { IHideoutTakeProductionRequestData } from "@spt/models/eft/hideout/IHideoutTakeProductionRequestData";
import { IHideoutToggleAreaRequestData } from "@spt/models/eft/hideout/IHideoutToggleAreaRequestData";
import { IHideoutUpgradeCompleteRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeCompleteRequestData";
import { IHideoutUpgradeRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeRequestData";
import { IQteData } from "@spt/models/eft/hideout/IQteData";
import { IQteData, IQteResult } from "@spt/models/eft/hideout/IQteData";
import { IRecordShootingRangePoints } from "@spt/models/eft/hideout/IRecordShootingRangePoints";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { HideoutAreas } from "@spt/models/enums/HideoutAreas";
@ -87,7 +87,7 @@ export declare class HideoutController {
* @param sessionID Session id
* @param output Client response
*/
upgradeComplete(pmcData: IPmcData, request: HideoutUpgradeCompleteRequestData, sessionID: string, output: IItemEventRouterResponse): void;
upgradeComplete(pmcData: IPmcData, request: IHideoutUpgradeCompleteRequestData, sessionID: string, output: IItemEventRouterResponse): void;
/**
* Upgrade wall status to visible in profile if medstation/water collector are both level 1
* @param pmcData Player profile
@ -101,7 +101,7 @@ 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: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void;
protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: IStage): void;
/**
* Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage
* @param sessionId Session id
@ -110,14 +110,14 @@ export declare class HideoutController {
* @param equipmentPresetHideoutArea
* @param output Response to send back to client
*/
protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void;
protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: IStage, 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 dbHideoutArea Hideout area from db being upgraded
* @param hideoutStage Stage area upgraded to
*/
protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void;
protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: IStage): void;
/**
* @param output Object to send to client
* @param sessionID Session/player id
@ -125,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(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void;
protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: IStage, output: IItemEventRouterResponse): void;
/**
* Handle HideoutPutItemsInAreaSlots
* Create item in hideout slot item array, remove item from player inventory
@ -252,6 +252,12 @@ export declare class HideoutController {
* @param request QTE result object
*/
handleQTEEventOutcome(sessionId: string, pmcData: IPmcData, request: IHandleQTEEventRequestData, output: IItemEventRouterResponse): void;
/**
* Apply mild/severe muscle pain after gym use
* @param pmcData Profile to apply effect to
* @param finishEffect Effect data to apply after completing QTE gym event
*/
protected handleMusclePain(pmcData: IPmcData, finishEffect: IQteResult): void;
/**
* Record a high score from the shooting range into a player profiles overallcounters
* @param sessionId Session id

View File

@ -9,7 +9,7 @@ import { IGetInsuranceCostRequestData } from "@spt/models/eft/insurance/IGetInsu
import { IGetInsuranceCostResponseData } from "@spt/models/eft/insurance/IGetInsuranceCostResponseData";
import { IInsureRequestData } from "@spt/models/eft/insurance/IInsureRequestData";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { Insurance } from "@spt/models/eft/profile/ISptProfile";
import { IInsurance } from "@spt/models/eft/profile/ISptProfile";
import { IInsuranceConfig } from "@spt/models/spt/config/IInsuranceConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
@ -68,7 +68,7 @@ export declare class InsuranceController {
* @param time The time to check ready status against. Current time by default.
* @returns All insured items that are ready to be processed.
*/
protected filterInsuredItems(sessionID: string, time?: number): Insurance[];
protected filterInsuredItems(sessionID: string, time?: number): IInsurance[];
/**
* This method orchestrates the processing of insured items in a profile.
*
@ -76,13 +76,13 @@ export declare class InsuranceController {
* @param sessionID The session ID that should receive the processed items.
* @returns void
*/
protected processInsuredItems(insuranceDetails: Insurance[], sessionID: string): void;
protected processInsuredItems(insuranceDetails: IInsurance[], sessionID: string): void;
/**
* Count all items in all insurance packages.
* @param insurance
* @returns
*/
protected countAllInsuranceItems(insurance: Insurance[]): number;
protected countAllInsuranceItems(insurance: IInsurance[]): number;
/**
* Remove an insurance package from a profile using the package's system data information.
*
@ -90,7 +90,7 @@ export declare class InsuranceController {
* @param index The array index of the insurance package to remove.
* @returns void
*/
protected removeInsurancePackageFromProfile(sessionID: string, insPackage: Insurance): void;
protected removeInsurancePackageFromProfile(sessionID: string, insPackage: IInsurance): void;
/**
* Finds the items that should be deleted based on the given Insurance object.
*
@ -98,7 +98,7 @@ export declare class InsuranceController {
* @param insured - The insurance object containing the items to evaluate for deletion.
* @returns A Set containing the IDs of items that should be deleted.
*/
protected findItemsToDelete(rootItemParentID: string, insured: Insurance): Set<string>;
protected findItemsToDelete(rootItemParentID: string, insured: IInsurance): Set<string>;
/**
* Initialize a Map object that holds main-parents to all of their attachments. Note that "main-parent" in this
* context refers to the parent item that an attachment is attached to. For example, a suppressor attached to a gun,
@ -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<string, IItem>): Map<string, IItem[]>;
protected populateParentAttachmentsMap(rootItemParentID: string, insured: IInsurance, itemsMap: Map<string, IItem>): Map<string, IItem[]>;
/**
* 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.
@ -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<string>, parentAttachmentsMap: Map<string, IItem[]>): void;
protected processRegularItems(insured: IInsurance, toDelete: Set<string>, parentAttachmentsMap: Map<string, IItem[]>): void;
/**
* Process parent items and their attachments, updating the toDelete Set accordingly.
*
@ -167,7 +167,7 @@ export declare class InsuranceController {
* @param toDelete The items that should be deleted.
* @returns void
*/
protected removeItemsFromInsurance(insured: Insurance, toDelete: Set<string>): void;
protected removeItemsFromInsurance(insured: IInsurance, toDelete: Set<string>): void;
/**
* Handle sending the insurance message to the user that potentially contains the valid insurance items.
*
@ -175,7 +175,7 @@ export declare class InsuranceController {
* @param insurance The context of insurance to use.
* @returns void
*/
protected sendMail(sessionID: string, insurance: Insurance): void;
protected sendMail(sessionID: string, insurance: IInsurance): void;
/**
* Determines whether an insured item should be removed from the player's inventory based on a random roll and
* trader-specific return chance.

View File

@ -5,7 +5,7 @@ import { IChangeRequestData } from "@spt/models/eft/launcher/IChangeRequestData"
import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData";
import { IRegisterData } from "@spt/models/eft/launcher/IRegisterData";
import { IConnectResponse } from "@spt/models/eft/profile/IConnectResponse";
import { Info, ModDetails } from "@spt/models/eft/profile/ISptProfile";
import { IModDetails, Info } from "@spt/models/eft/profile/ISptProfile";
import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig";
import { IPackageJsonData } from "@spt/models/spt/mod/IPackageJsonData";
import { ILogger } from "@spt/models/spt/utils/ILogger";
@ -61,5 +61,5 @@ export declare class LauncherController {
* @param sessionId Player id
* @returns Array of mod details
*/
getServerModsProfileUsed(sessionId: string): ModDetails[];
getServerModsProfileUsed(sessionId: string): IModDetails[];
}

View File

@ -1,4 +1,5 @@
import { ILocationsGenerateAllResponse } from "@spt/models/eft/common/ILocationsSourceDestinationBase";
import { IGetAirdropLootRequest } from "@spt/models/eft/location/IGetAirdropLootRequest";
import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse";
import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
@ -22,5 +23,5 @@ export declare class LocationController {
*/
generateAll(sessionId: string): ILocationsGenerateAllResponse;
/** Handle client/airdrop/loot */
getAirdropLoot(): IGetAirdropLootResponse;
getAirdropLoot(request: IGetAirdropLootRequest): IGetAirdropLootResponse;
}

View File

@ -14,20 +14,18 @@ import { ConfigServer } from "@spt/servers/ConfigServer";
import { SaveServer } from "@spt/servers/SaveServer";
import { LocationLifecycleService } from "@spt/services/LocationLifecycleService";
import { MatchLocationService } from "@spt/services/MatchLocationService";
import { ProfileSnapshotService } from "@spt/services/ProfileSnapshotService";
import { ICloner } from "@spt/utils/cloners/ICloner";
export declare class MatchController {
protected logger: ILogger;
protected saveServer: SaveServer;
protected matchLocationService: MatchLocationService;
protected configServer: ConfigServer;
protected profileSnapshotService: ProfileSnapshotService;
protected applicationContext: ApplicationContext;
protected locationLifecycleService: LocationLifecycleService;
protected cloner: ICloner;
protected matchConfig: IMatchConfig;
protected pmcConfig: IPmcConfig;
constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner);
constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner);
getEnabled(): boolean;
/** Handle client/match/group/delete */
deleteGroup(info: any): void;

View File

@ -14,7 +14,7 @@ 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 { IAddOfferRequestData, Requirement } from "@spt/models/eft/ragfair/IAddOfferRequestData";
import { IAddOfferRequestData, IRequirement } from "@spt/models/eft/ragfair/IAddOfferRequestData";
import { IExtendOfferRequestData } from "@spt/models/eft/ragfair/IExtendOfferRequestData";
import { IGetItemPriceResult } from "@spt/models/eft/ragfair/IGetItemPriceResult";
import { IGetMarketPriceRequestData } from "@spt/models/eft/ragfair/IGetMarketPriceRequestData";
@ -137,10 +137,11 @@ export declare class RagfairController {
update(): void;
/**
* Called when creating an offer on flea, fills values in top right corner
* @param getPriceRequest
* @param getPriceRequest Client request object
* @param ignoreTraderOffers Should trader offers be ignored in the calcualtion
* @returns min/avg/max values for an item based on flea offers available
*/
getItemMinAvgMaxFleaPriceValues(getPriceRequest: IGetMarketPriceRequestData): IGetItemPriceResult;
getItemMinAvgMaxFleaPriceValues(getPriceRequest: IGetMarketPriceRequestData, ignoreTraderOffers?: boolean): IGetItemPriceResult;
/**
* List item(s) on flea for sale
* @param pmcData Player profile
@ -212,7 +213,7 @@ export declare class RagfairController {
* @param requirements
* @returns Rouble price
*/
protected calculateRequirementsPriceInRub(requirements: Requirement[]): number;
protected calculateRequirementsPriceInRub(requirements: IRequirement[]): number;
/**
* Using item ids from flea offer request, find corresponding items from player inventory and return as array
* @param pmcData Player profile
@ -223,7 +224,7 @@ export declare class RagfairController {
items: IItem[][] | undefined;
errorMessage: string | undefined;
};
createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer;
createPlayerOffer(sessionId: string, requirements: IRequirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer;
getAllFleaPrices(): Record<string, number>;
getStaticPrices(): Record<string, number>;
/**

View File

@ -1,17 +1,21 @@
import { WeatherGenerator } from "@spt/generators/WeatherGenerator";
import { WeatherHelper } from "@spt/helpers/WeatherHelper";
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 { RaidWeatherService } from "@spt/services/RaidWeatherService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
export declare class WeatherController {
protected weatherGenerator: WeatherGenerator;
protected logger: ILogger;
protected configServer: ConfigServer;
protected seasonalEventService: SeasonalEventService;
protected raidWeatherService: RaidWeatherService;
protected weatherHelper: WeatherHelper;
protected weatherConfig: IWeatherConfig;
constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService);
constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService, raidWeatherService: RaidWeatherService, weatherHelper: WeatherHelper);
/** Handle client/weather */
generate(): IWeatherData;
/**
@ -19,5 +23,6 @@ export declare class WeatherController {
* @returns Date object
*/
getCurrentInRaidTime(): Date;
generateLocal(sesssionID: string): IGetLocalWeatherResponseData;
/** Handle client/localGame/weather */
generateLocal(sesssionId: string): IGetLocalWeatherResponseData;
}

View File

@ -16,7 +16,7 @@ import { IFilterPlateModsForSlotByLevelResult } from "@spt/models/spt/bots/IFilt
import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEquipmentProperties";
import { IGenerateWeaponRequest } from "@spt/models/spt/bots/IGenerateWeaponRequest";
import { IModToSpawnRequest } from "@spt/models/spt/bots/IModToSpawnRequest";
import { EquipmentFilterDetails, EquipmentFilters, IBotConfig } from "@spt/models/spt/config/IBotConfig";
import { EquipmentFilters, IBotConfig, IEquipmentFilterDetails } 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";
@ -56,11 +56,12 @@ export declare class BotEquipmentModGenerator {
* @param equipment Equipment item to add mods to
* @param modPool Mod list to choose frm
* @param parentId parentid of item to add mod to
* @param parentTemplate template objet of item to add mods to
* @param parentTemplate Template object of item to add mods to
* @param specificBlacklist The relevant blacklist from bot.json equipment dictionary
* @param forceSpawn should this mod be forced to spawn
* @returns Item + compatible mods as an array
*/
generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[];
generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, specificBlacklist: IEquipmentFilterDetails, shouldForceSpawn?: boolean): IItem[];
/**
* Filter a bots plate pool based on its current level
* @param settings Bot equipment generation settings
@ -125,13 +126,13 @@ export declare class BotEquipmentModGenerator {
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
* @param modSlot slot the mod sits in
* @param itemSlot slot the item sits in from db
* @param modSlotName Name of slot the mod sits in
* @param modSpawnChances Chances for various mod spawns
* @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: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn;
protected shouldModBeSpawned(itemSlot: ISlot, modSlotName: 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
@ -235,7 +236,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: IMods, botEquipBlacklist: EquipmentFilterDetails): void;
protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: IEquipmentFilterDetails): void;
/**
* Get the possible items that fit a slot
* @param parentItemId item tpl to get compatible items for
@ -243,7 +244,7 @@ export declare class BotEquipmentModGenerator {
* @param botEquipBlacklist Equipment that should not be picked
* @returns Array of compatible items for that slot
*/
protected getDynamicModPool(parentItemId: string, modSlot: string, botEquipBlacklist: EquipmentFilterDetails): string[];
protected getDynamicModPool(parentItemId: string, modSlot: string, botEquipBlacklist: IEquipmentFilterDetails): string[];
/**
* Take a list of tpls and filter out blacklisted values using itemFilterService + botEquipmentBlacklist
* @param allowedMods Base mods to filter
@ -251,7 +252,7 @@ export declare class BotEquipmentModGenerator {
* @param modSlot Slot mods belong to
* @returns Filtered array of mod tpls
*/
protected filterWeaponModsByBlacklist(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string): string[];
protected filterModsByBlacklist(allowedMods: string[], botEquipBlacklist: IEquipmentFilterDetails, modSlot: string): string[];
/**
* With the shotgun revolver (60db29ce99594040e04c4a27) 12.12 introduced CylinderMagazines.
* Those magazines (e.g. 60dc519adf4c47305f6d410d) have a "Cartridges" entry with a _max_count=0.

View File

@ -5,7 +5,7 @@ import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper";
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 { IBotGenerationDetails } 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";
@ -53,7 +53,7 @@ export declare class BotGenerator {
* @param botGenerationDetails details on how to generate bots
* @returns constructed bot
*/
prepareAndGenerateBot(sessionId: string, botGenerationDetails: BotGenerationDetails): IBotBase;
prepareAndGenerateBot(sessionId: string, botGenerationDetails: IBotGenerationDetails): IBotBase;
/**
* Get a clone of the default bot base object and adjust its role/side/difficulty values
* @param botRole Role bot should have
@ -75,7 +75,7 @@ export declare class BotGenerator {
* @param botGenerationDetails details on how to generate the bot
* @returns IBotBase object
*/
protected generateBot(sessionId: string, bot: IBotBase, botJsonTemplate: IBotType, botGenerationDetails: BotGenerationDetails): IBotBase;
protected generateBot(sessionId: string, bot: IBotBase, botJsonTemplate: IBotType, botGenerationDetails: IBotGenerationDetails): IBotBase;
protected addAdditionalPocketLootWeightsForUnheardBot(botJsonTemplate: IBotType): void;
/**
* Remove items from item.json/lootableItemBlacklist from bots inventory
@ -88,7 +88,7 @@ export declare class BotGenerator {
* @param appearance Appearance settings to choose from
* @param botGenerationDetails Generation details
*/
protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void;
protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: IBotGenerationDetails): void;
/**
* Log the number of PMCs generated to the debug console
* @param output Generated bot array, ready to send to client

View File

@ -1,17 +1,22 @@
import { ApplicationContext } from "@spt/context/ApplicationContext";
import { BotEquipmentModGenerator } from "@spt/generators/BotEquipmentModGenerator";
import { BotLootGenerator } from "@spt/generators/BotLootGenerator";
import { BotWeaponGenerator } from "@spt/generators/BotWeaponGenerator";
import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper";
import { BotHelper } from "@spt/helpers/BotHelper";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { WeatherHelper } from "@spt/helpers/WeatherHelper";
import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper";
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 { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData";
import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots";
import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEquipmentProperties";
import { EquipmentFilterDetails, IBotConfig } from "@spt/models/spt/config/IBotConfig";
import { IBotConfig } from "@spt/models/spt/config/IBotConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService";
import { BotEquipmentModPoolService } from "@spt/services/BotEquipmentModPoolService";
import { DatabaseService } from "@spt/services/DatabaseService";
import { LocalisationService } from "@spt/services/LocalisationService";
@ -22,18 +27,22 @@ export declare class BotInventoryGenerator {
protected hashUtil: HashUtil;
protected randomUtil: RandomUtil;
protected databaseService: DatabaseService;
protected applicationContext: ApplicationContext;
protected botWeaponGenerator: BotWeaponGenerator;
protected botLootGenerator: BotLootGenerator;
protected botGeneratorHelper: BotGeneratorHelper;
protected profileHelper: ProfileHelper;
protected botHelper: BotHelper;
protected weightedRandomHelper: WeightedRandomHelper;
protected itemHelper: ItemHelper;
protected weatherHelper: WeatherHelper;
protected localisationService: LocalisationService;
protected botEquipmentFilterService: BotEquipmentFilterService;
protected botEquipmentModPoolService: BotEquipmentModPoolService;
protected botEquipmentModGenerator: BotEquipmentModGenerator;
protected configServer: ConfigServer;
protected botConfig: IBotConfig;
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseService: DatabaseService, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, botHelper: BotHelper, weightedRandomHelper: WeightedRandomHelper, itemHelper: ItemHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, botEquipmentModGenerator: BotEquipmentModGenerator, configServer: ConfigServer);
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseService: DatabaseService, applicationContext: ApplicationContext, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, profileHelper: ProfileHelper, botHelper: BotHelper, weightedRandomHelper: WeightedRandomHelper, itemHelper: ItemHelper, weatherHelper: WeatherHelper, localisationService: LocalisationService, botEquipmentFilterService: BotEquipmentFilterService, botEquipmentModPoolService: BotEquipmentModPoolService, botEquipmentModGenerator: BotEquipmentModGenerator, configServer: ConfigServer);
/**
* Add equipment/weapons/loot to bot
* @param sessionId Session id
@ -52,6 +61,7 @@ export declare class BotInventoryGenerator {
protected generateInventoryBase(): PmcInventory;
/**
* Add equipment to a bot
* @param sessionId Session id
* @param templateInventory bot/x.json data from db
* @param wornItemChances Chances items will be added to bot
* @param botRole Role bot has (assault/pmcBot)
@ -59,7 +69,7 @@ export declare class BotInventoryGenerator {
* @param botLevel Level of bot
* @param chosenGameVersion Game version for bot, only really applies for PMCs
*/
protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void;
protected generateAndAddEquipmentToBot(sessionId: string, templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string, raidConfig: IGetRaidConfigurationRequestData): void;
/**
* Remove non-armored rigs from parameter data
* @param templateEquipment Equpiment to filter TacticalVest of
@ -75,6 +85,7 @@ export declare class BotInventoryGenerator {
protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): void;
/**
* Add a piece of equipment with mods to inventory from the provided pools
* @param sessionId Session id
* @param settings Values to adjust how item is chosen and added to bot
* @returns true when item added
*/
@ -82,10 +93,10 @@ export declare class BotInventoryGenerator {
/**
* Get all possible mods for item and filter down based on equipment blacklist from bot.json config
* @param itemTpl Item mod pool is being retrieved and filtered
* @param equipmentBlacklist blacklist to filter mod pool with
* @param equipmentBlacklist Blacklist to filter mod pool with
* @returns Filtered pool of mods
*/
protected getFilteredDynamicModsForItem(itemTpl: string, equipmentBlacklist: EquipmentFilterDetails[]): Record<string, string[]>;
protected getFilteredDynamicModsForItem(itemTpl: string, equipmentBlacklist: Record<string, string[]>): Record<string, string[]>;
/**
* Work out what weapons bot should have equipped and add them to bot inventory
* @param templateInventory bot/x.json data from db

View File

@ -1,7 +1,7 @@
import { MinMax } from "@spt/models/common/MinMax";
import { IRandomisedBotLevelResult } from "@spt/models/eft/bot/IRandomisedBotLevelResult";
import { IBotBase } from "@spt/models/eft/common/tables/IBotBase";
import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails";
import { IBotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseService } from "@spt/services/DatabaseService";
import { MathUtil } from "@spt/utils/MathUtil";
@ -19,7 +19,7 @@ export declare class BotLevelGenerator {
* @param bot Bot the level is being generated for
* @returns IRandomisedBotLevelResult object
*/
generateBotLevel(levelDetails: MinMax, botGenerationDetails: BotGenerationDetails, bot: IBotBase): IRandomisedBotLevelResult;
generateBotLevel(levelDetails: MinMax, botGenerationDetails: IBotGenerationDetails, bot: IBotBase): IRandomisedBotLevelResult;
protected chooseBotLevel(min: number, max: number, shift: number, number: number): number;
/**
* Return the min and max bot level based on a relative delta from the PMC level
@ -28,5 +28,5 @@ export declare class BotLevelGenerator {
* @param maxlevel Max level allowed
* @returns A MinMax of the lowest and highest level to generate the bots
*/
protected getRelativeBotLevelRange(botGenerationDetails: BotGenerationDetails, levelDetails: MinMax, maxAvailableLevel: number): MinMax;
protected getRelativeBotLevelRange(botGenerationDetails: IBotGenerationDetails, levelDetails: MinMax, maxAvailableLevel: number): MinMax;
}

View File

@ -8,7 +8,7 @@ import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBa
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 { IGenerateWeaponResult } from "@spt/models/spt/bots/IGenerateWeaponResult";
import { IBotConfig } from "@spt/models/spt/config/IBotConfig";
import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig";
import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig";
@ -52,7 +52,7 @@ export declare class BotWeaponGenerator {
* @param isPmc Is weapon generated for a pmc
* @returns GenerateWeaponResult object
*/
generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult;
generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): IGenerateWeaponResult;
/**
* Get a random weighted weapon from a bots pool of weapons
* @param equipmentSlot Primary/secondary/holster
@ -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, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, 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): IGenerateWeaponResult;
/**
* Insert a cartridge(s) into a weapon
* Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc
@ -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: IGenerationData, inventory: PmcInventory, botRole: string): void;
addExtraMagazinesToInventory(generatedWeaponResult: IGenerateWeaponResult, 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: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void;
protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: IGenerateWeaponResult, inventory: PmcInventory): void;
/**
* Add ammo to the secure container
* @param stackCount How many stacks of ammo to add

View File

@ -2,11 +2,12 @@ import { InventoryHelper } from "@spt/helpers/InventoryHelper";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { PresetHelper } from "@spt/helpers/PresetHelper";
import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper";
import { MinMax } from "@spt/models/common/MinMax";
import { IPreset } from "@spt/models/eft/common/IGlobals";
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 { LootRequest } from "@spt/models/spt/services/LootRequest";
import { IRewardDetails, ISealedAirdropContainerSettings } from "@spt/models/spt/config/IInventoryConfig";
import { ILootRequest } from "@spt/models/spt/services/ILootRequest";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseService } from "@spt/services/DatabaseService";
import { ItemFilterService } from "@spt/services/ItemFilterService";
@ -36,7 +37,22 @@ export declare class LootGenerator {
* @param options parameters to adjust how loot is generated
* @returns An array of loot items
*/
createRandomLoot(options: LootRequest): IItem[];
createRandomLoot(options: ILootRequest): IItem[];
/**
* Generate An array of items
* TODO - handle weapon presets/ammo packs
* @param forcedLootDict Dictionary of item tpls with minmax values
* @returns Array of IItem
*/
createForcedLoot(forcedLootDict: Record<string, MinMax>): IItem[];
/**
* Get pool of items from item db that fit passed in param criteria
* @param itemTplBlacklist Prevent these items
* @param itemTypeWhitelist Only allow these items
* @param useRewardItemBlacklist Should item.json reward item config be used
* @param allowBossItems Should boss items be allowed in result
* @returns results of filtering + blacklist used
*/
protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): {
itemPool: [string, ITemplateItem][];
blacklist: Set<string>;
@ -47,7 +63,7 @@ export declare class LootGenerator {
* @param options Loot request options - armor level etc
* @returns True if item has desired armor level
*/
protected isArmorOfDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean;
protected isArmorOfDesiredProtectionLevel(armor: IPreset, options: ILootRequest): boolean;
/**
* Construct item limit record to hold max and current item count for each item type
* @param limits limits as defined in config
@ -65,14 +81,14 @@ export declare class LootGenerator {
protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record<string, {
current: number;
max: number;
}>, options: LootRequest, result: IItem[]): boolean;
}>, options: ILootRequest, 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
* @param options loot options
* @returns stack count
*/
protected getRandomisedStackCount(item: ITemplateItem, options: LootRequest): number;
protected getRandomisedStackCount(item: ITemplateItem, options: ILootRequest): number;
/**
* Find a random item in items.json and add to result array
* @param presetPool Presets to choose from
@ -111,12 +127,12 @@ export declare class LootGenerator {
* @param rewardContainerDetails
* @returns Array of item with children arrays
*/
getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][];
getRandomLootContainerLoot(rewardContainerDetails: IRewardDetails): IItem[][];
/**
* Pick a reward item based on the reward details data
* @param rewardContainerDetails
* @returns Single tpl
*/
protected pickRewardItem(rewardContainerDetails: RewardDetails): string;
protected pickRewardItem(rewardContainerDetails: IRewardDetails): string;
}
export {};

View File

@ -6,7 +6,7 @@ import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
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 { IKarmaLevel, IPlayerScavConfig } from "@spt/models/spt/config/IPlayerScavConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { SaveServer } from "@spt/servers/SaveServer";
@ -67,7 +67,7 @@ export declare class PlayerScavGenerator {
* @param karmaSettings Values to modify the bot template with
* @param baseBotNode bot template to modify according to karama level settings
*/
protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void;
protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: IKarmaLevel, baseBotNode: IBotType): void;
protected getScavSkills(scavProfile: IPmcData): ISkills;
protected getDefaultScavSkills(): ISkills;
protected getScavStats(scavProfile: IPmcData): IStats;

View File

@ -9,8 +9,10 @@ import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper";
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";
import { Dynamic, IArmorPlateBlacklistSettings, IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig";
import { IOfferRequirement, IRagfairOffer, IRagfairOfferUser } from "@spt/models/eft/ragfair/IRagfairOffer";
import { IBotConfig } from "@spt/models/spt/config/IBotConfig";
import { IArmorPlateBlacklistSettings, IBarterDetails, IDynamic, IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig";
import { ITplWithFleaPrice } from "@spt/models/spt/ragfair/ITplWithFleaPrice";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { SaveServer } from "@spt/servers/SaveServer";
@ -45,6 +47,7 @@ export declare class RagfairOfferGenerator {
protected configServer: ConfigServer;
protected cloner: ICloner;
protected ragfairConfig: IRagfairConfig;
protected botConfig: IBotConfig;
protected allowedFleaPriceItemsForBarter: {
tpl: string;
price: number;
@ -86,7 +89,7 @@ export declare class RagfairOfferGenerator {
* @param offerRequirements barter requirements for offer
* @returns rouble cost of offer
*/
protected convertOfferRequirementsIntoRoubles(offerRequirements: OfferRequirement[]): number;
protected convertOfferRequirementsIntoRoubles(offerRequirements: IOfferRequirement[]): number;
/**
* Get avatar url from trader table in db
* @param isTrader Is user we're getting avatar for a trader
@ -136,7 +139,7 @@ export declare class RagfairOfferGenerator {
* @param isExpiredOffer is an expired offer
* @param config Ragfair dynamic config
*/
protected createOffersFromAssort(assortItemWithChildren: IItem[], isExpiredOffer: boolean, config: Dynamic): Promise<void>;
protected createOffersFromAssort(assortItemWithChildren: IItem[], isExpiredOffer: boolean, config: IDynamic): Promise<void>;
/**
* iterate over an items chidren and look for plates above desired level and remove them
* @param presetWithChildren preset to check for plates
@ -203,17 +206,15 @@ export declare class RagfairOfferGenerator {
/**
* Create a barter-based barter scheme, if not possible, fall back to making barter scheme currency based
* @param offerItems Items for sale in offer
* @param barterConfig Barter config from ragfairConfig.dynamic.barter
* @returns Barter scheme
*/
protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[];
protected createBarterBarterScheme(offerItems: IItem[], barterConfig: IBarterDetails): IBarterScheme[];
/**
* Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter`
* @returns array with tpl/price values
*/
protected getFleaPricesAsArray(): {
tpl: string;
price: number;
}[];
protected getFleaPricesAsArray(): ITplWithFleaPrice[];
/**
* Create a random currency-based barter scheme for an array of items
* @param offerWithChildren Items on offer

View File

@ -33,26 +33,30 @@ export declare class RepeatableQuestRewardGenerator {
protected questConfig: IQuestConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, databaseService: DatabaseService, itemHelper: ItemHelper, presetHelper: PresetHelper, handbookHelper: HandbookHelper, localisationService: LocalisationService, objectId: ObjectId, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer, cloner: ICloner);
/**
* Generate the reward for a mission. A reward can consist of
* Generate the reward for a mission. A reward can consist of:
* - Experience
* - Money
* - GP coins
* - Weapon preset
* - Items
* - Trader Reputation
* - Skill level experience
*
* The reward is dependent on the player level as given by the wiki. The exact mapping of pmcLevel to
* experience / money / items / trader reputation can be defined in QuestConfig.js
*
* There's also a random variation of the reward the spread of which can be also defined in the config.
* There's also a random variation of the reward the spread of which can be also defined in the config
*
* Additionally, a scaling factor w.r.t. quest difficulty going from 0.2...1 can be used
*
* @param {integer} pmcLevel player's level
* @param {number} difficulty a reward scaling factor from 0.2 to 1
* @param {string} traderId the trader for reputation gain (and possible in the future filtering of reward item type based on trader)
* @param {object} repeatableConfig The configuration for the repeatable kind (daily, weekly) as configured in QuestConfig for the requested quest
* @returns {object} object of "Reward"-type that can be given for a repeatable mission
* @param pmcLevel Level of player reward is being generated for
* @param difficulty Reward scaling factor from 0.2 to 1
* @param traderId Trader reward will be given by
* @param repeatableConfig Config for quest type (daily, weekly)
* @param questConfig
* @param rewardTplBlacklist OPTIONAL: list of tpls to NOT use when picking a reward
* @returns IQuestRewards
*/
generateReward(pmcLevel: number, difficulty: number, traderId: string, repeatableConfig: IRepeatableQuestConfig, questConfig: IBaseQuestConfig): IQuestRewards;
generateReward(pmcLevel: number, difficulty: number, traderId: string, repeatableConfig: IRepeatableQuestConfig, questConfig: IBaseQuestConfig, rewardTplBlacklist?: string[]): IQuestRewards;
protected getQuestRewardValues(rewardScaling: IRewardScaling, difficulty: number, pmcLevel: number): IQuestRewardValues;
/**
* Get an array of items + stack size to give to player as reward that fit inside of a rouble budget

View File

@ -4,7 +4,7 @@ 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";
import { RewardCountAndPriceDetails, ScavCaseRewardCountsAndPrices } from "@spt/models/spt/hideout/ScavCaseRewardCountsAndPrices";
import { IRewardCountAndPriceDetails, IScavCaseRewardCountsAndPrices } from "@spt/models/spt/hideout/ScavCaseRewardCountsAndPrices";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { DatabaseService } from "@spt/services/DatabaseService";
@ -48,7 +48,7 @@ export declare class ScavCaseRewardGenerator {
* @param itemFilters how the rewards should be filtered down (by item count)
* @returns
*/
protected pickRandomRewards(items: ITemplateItem[], itemFilters: RewardCountAndPriceDetails, rarity: string): ITemplateItem[];
protected pickRandomRewards(items: ITemplateItem[], itemFilters: IRewardCountAndPriceDetails, rarity: string): ITemplateItem[];
/**
* Choose if money should be a reward based on the moneyRewardChancePercent config chance in scavCaseConfig
* @returns true if reward should be money
@ -81,13 +81,13 @@ export declare class ScavCaseRewardGenerator {
* @param itemFilters controls how the dbItems will be filtered and returned (handbook price)
* @returns filtered dbItems array
*/
protected getFilteredItemsByPrice(dbItems: ITemplateItem[], itemFilters: RewardCountAndPriceDetails): ITemplateItem[];
protected getFilteredItemsByPrice(dbItems: ITemplateItem[], itemFilters: IRewardCountAndPriceDetails): ITemplateItem[];
/**
* Gathers the reward min and max count params for each reward quality level from config and scavcase.json into a single object
* @param scavCaseDetails scavcase.json values
* @returns ScavCaseRewardCountsAndPrices object
*/
protected getScavCaseRewardCountsAndPrices(scavCaseDetails: IHideoutScavCase): ScavCaseRewardCountsAndPrices;
protected getScavCaseRewardCountsAndPrices(scavCaseDetails: IHideoutScavCase): IScavCaseRewardCountsAndPrices;
/**
* Randomises the size of ammo and money stacks
* @param itemToCalculate ammo or money item

View File

@ -1,6 +1,8 @@
import { ApplicationContext } from "@spt/context/ApplicationContext";
import { WeatherHelper } from "@spt/helpers/WeatherHelper";
import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper";
import { IWeather, IWeatherData } from "@spt/models/eft/weather/IWeatherData";
import { Season } from "@spt/models/enums/Season";
import { WindDirection } from "@spt/models/enums/WindDirection";
import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
@ -10,6 +12,7 @@ import { RandomUtil } from "@spt/utils/RandomUtil";
import { TimeUtil } from "@spt/utils/TimeUtil";
export declare class WeatherGenerator {
protected weightedRandomHelper: WeightedRandomHelper;
protected weatherHelper: WeatherHelper;
protected logger: ILogger;
protected randomUtil: RandomUtil;
protected timeUtil: TimeUtil;
@ -18,7 +21,7 @@ export declare class WeatherGenerator {
protected configServer: ConfigServer;
protected weatherConfig: IWeatherConfig;
private serverStartTimestampMS;
constructor(weightedRandomHelper: WeightedRandomHelper, logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
constructor(weightedRandomHelper: WeightedRandomHelper, weatherHelper: WeatherHelper, logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
/**
* Get current + raid datetime and format into correct BSG format and return
* @param data Weather data
@ -32,12 +35,6 @@ export declare class WeatherGenerator {
* @returns formatted time
*/
protected getBsgFormattedInRaidTime(): string;
/**
* Get the current in-raid time
* @param currentDate (new Date())
* @returns Date object of current in-raid time
*/
getInRaidTime(): Date;
/**
* Get current time formatted to fit BSGs requirement
* @param date date to format into bsg style
@ -46,14 +43,24 @@ export declare class WeatherGenerator {
protected getBSGFormattedTime(date: Date): string;
/**
* Return randomised Weather data with help of config/weather.json
* @param currentSeason the currently active season
* @param timestamp OPTIONAL what timestamp to generate the weather data at, defaults to now when not supplied
* @returns Randomised weather data
*/
generateWeather(): IWeather;
generateWeather(currentSeason: Season, timestamp?: number): IWeather;
/**
* Choose a temprature for the raid based on time of day and current season
* @param currentSeason What season tarkov is currently in
* @param inRaidTimestamp What time is the raid running at
* @returns Timestamp
*/
protected getRaidTemperature(currentSeason: Season, inRaidTimestamp: number): number;
/**
* Set IWeather date/time/timestamp values to now
* @param weather Object to update
* @param timestamp OPTIONAL, define timestamp used
*/
protected setCurrentDateTime(weather: IWeather): void;
protected setCurrentDateTime(weather: IWeather, timestamp?: number): void;
protected getWeightedWindDirection(): WindDirection;
protected getWeightedClouds(): number;
protected getWeightedWindSpeed(): number;

View File

@ -1,6 +1,6 @@
import { MinMax } from "@spt/models/common/MinMax";
import { IBotType, IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType";
import { EquipmentFilters, IBotConfig, RandomisationDetails } from "@spt/models/spt/config/IBotConfig";
import { EquipmentFilters, IBotConfig, IRandomisationDetails } 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";
@ -54,7 +54,7 @@ export declare class BotHelper {
* @param botEquipConfig bot equipment json
* @returns RandomisationDetails
*/
getBotRandomizationDetails(botLevel: number, botEquipConfig: EquipmentFilters): RandomisationDetails | undefined;
getBotRandomizationDetails(botLevel: number, botEquipConfig: EquipmentFilters): IRandomisationDetails | undefined;
/**
* Choose between pmcBEAR and pmcUSEC at random based on the % defined in pmcConfig.isUsec
* @returns pmc role
@ -71,5 +71,11 @@ export declare class BotHelper {
* @returns pmc side as string
*/
protected getRandomizedPmcSide(): string;
getPmcNicknameOfMaxLength(userId: string, maxLength: number): string;
/**
* Get a name from a PMC that fits the desired length
* @param maxLength Max length of name, inclusive
* @param side OPTIONAL - what side PMC to get name from (usec/bear)
* @returns name of PMC
*/
getPmcNicknameOfMaxLength(maxLength: number, side?: string): string;
}

View File

@ -2,7 +2,7 @@ import { ItemHelper } from "@spt/helpers/ItemHelper";
import { NotificationSendHelper } from "@spt/helpers/NotificationSendHelper";
import { NotifierHelper } from "@spt/helpers/NotifierHelper";
import { IItem } from "@spt/models/eft/common/tables/IItem";
import { Dialogue, MessagePreview } from "@spt/models/eft/profile/ISptProfile";
import { IDialogue, IMessagePreview } from "@spt/models/eft/profile/ISptProfile";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { SaveServer } from "@spt/servers/SaveServer";
@ -23,7 +23,7 @@ export declare class DialogueHelper {
* @param dialogue
* @returns MessagePreview
*/
getMessagePreview(dialogue: Dialogue): MessagePreview;
getMessagePreview(dialogue: IDialogue): IMessagePreview;
/**
* Get the item contents for a particular message.
* @param messageID
@ -37,5 +37,5 @@ export declare class DialogueHelper {
* @param sessionId Session/player id
* @returns Dialog dictionary
*/
getDialogsForProfile(sessionId: string): Record<string, Dialogue>;
getDialogsForProfile(sessionId: string): Record<string, IDialogue>;
}

View File

@ -1,7 +1,7 @@
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 { IEffects, ISptProfile } from "@spt/models/eft/profile/ISptProfile";
import { IHealthConfig } from "@spt/models/spt/config/IHealthConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
@ -63,7 +63,7 @@ export declare class HealthHelper {
* @param bodyPartsWithEffects dict of body parts with effects that should be added to profile
* @param addEffects Should effects be added back to profile
*/
protected saveEffects(pmcData: IPmcData, sessionId: string, bodyPartsWithEffects: Effects, deleteExistingEffects?: boolean): void;
protected saveEffects(pmcData: IPmcData, sessionId: string, bodyPartsWithEffects: IEffects, deleteExistingEffects?: boolean): void;
/**
* Add effect to body part in profile
* @param pmcData Player profile

View File

@ -4,12 +4,13 @@ import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
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 { IHideoutArea, IStageBonus } from "@spt/models/eft/hideout/IHideoutArea";
import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData";
import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction";
import { IHideoutSingleProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutSingleProductionStartRequestData";
import { IHideoutTakeProductionRequestData } from "@spt/models/eft/hideout/IHideoutTakeProductionRequestData";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { HideoutAreas } from "@spt/models/enums/HideoutAreas";
import { SkillTypes } from "@spt/models/enums/SkillTypes";
import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
@ -55,7 +56,7 @@ export declare class HideoutHelper {
* This convenience function initializes new Production Object
* with all the constants.
*/
initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction;
initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): IProduction;
/**
* Is the provided object a Production type
* @param productive
@ -67,7 +68,7 @@ export declare class HideoutHelper {
* @param pmcData Profile to add bonus to
* @param bonus Bonus to add to profile
*/
applyPlayerUpgradesBonuses(pmcData: IPmcData, bonus: StageBonus): void;
applyPlayerUpgradesBonuses(pmcData: IPmcData, bonus: IStageBonus): void;
/**
* Process a players hideout, update areas that use resources + increment production timers
* @param sessionID Session id
@ -94,6 +95,21 @@ export declare class HideoutHelper {
isGeneratorOn: boolean;
waterCollectorHasFilter: boolean;
}): void;
/**
* Is a craft from a particular hideout area
* @param craft Craft to check
* @param hideoutType Type to check craft against
* @returns True it is from that area
*/
protected isCraftOfType(craft: IProduction, hideoutType: HideoutAreas): boolean;
/**
* Has the craft completed
* Ignores bitcoin farm/cultist circle as they're continuous crafts
* @param craft Craft to check
* @returns True when craft is compelte
*/
protected isCraftComplete(craft: IProduction): boolean;
/**
* Update progress timer for water collector
* @param pmcData profile to update

View File

@ -39,7 +39,7 @@ 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, isSurvived: boolean): void;
setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean, isTransfer: 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

View File

@ -16,7 +16,7 @@ import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventor
import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventorySplitRequestData";
import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { IInventoryConfig, RewardDetails } from "@spt/models/spt/config/IInventoryConfig";
import { IInventoryConfig, IRewardDetails } from "@spt/models/spt/config/IInventoryConfig";
import { IOwnerInventoryItems } from "@spt/models/spt/inventory/IOwnerInventoryItems";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
@ -246,7 +246,7 @@ export declare class InventoryHelper {
* @param itemTpl Container being opened
* @returns Reward details
*/
getRandomLootContainerRewardDetails(itemTpl: string): RewardDetails;
getRandomLootContainerRewardDetails(itemTpl: string): IRewardDetails;
getInventoryConfig(): IInventoryConfig;
/**
* Recursively checks if the given item is

View File

@ -1,4 +1,4 @@
import { Dialogue, IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { IDialogue, IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent";
import { MessageType } from "@spt/models/enums/MessageType";
import { SaveServer } from "@spt/servers/SaveServer";
@ -32,5 +32,5 @@ export declare class NotificationSendHelper {
* @param senderDetails Who is sending the message
* @returns Dialogue
*/
protected getDialog(sessionId: string, messageType: MessageType, senderDetails: IUserDialogInfo): Dialogue;
protected getDialog(sessionId: string, messageType: MessageType, senderDetails: IUserDialogInfo): IDialogue;
}

View File

@ -1,5 +1,5 @@
import { HttpServerHelper } from "@spt/helpers/HttpServerHelper";
import { Message, MessageContentRagfair } from "@spt/models/eft/profile/ISptProfile";
import { IMessage, IMessageContentRagfair } from "@spt/models/eft/profile/ISptProfile";
import { IWsChatMessageReceived } from "@spt/models/eft/ws/IWsChatMessageReceived";
import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent";
import { IWsRagfairOfferSold } from "@spt/models/eft/ws/IWsRagfairOfferSold";
@ -17,12 +17,12 @@ export declare class NotifierHelper {
* @param ragfairData Ragfair data to attach to notification
* @returns
*/
createRagfairOfferSoldNotification(dialogueMessage: Message, ragfairData: MessageContentRagfair): IWsRagfairOfferSold;
createRagfairOfferSoldNotification(dialogueMessage: IMessage, ragfairData: IMessageContentRagfair): IWsRagfairOfferSold;
/**
* Create a new notification with the specified dialogueMessage object
* @param dialogueMessage
* @returns
*/
createNewMessageNotification(dialogueMessage: Message): IWsChatMessageReceived;
createNewMessageNotification(dialogueMessage: IMessage): IWsChatMessageReceived;
getWebSocketServer(sessionID: string): string;
}

View File

@ -11,7 +11,6 @@ import { ConfigServer } from "@spt/servers/ConfigServer";
import { SaveServer } from "@spt/servers/SaveServer";
import { DatabaseService } from "@spt/services/DatabaseService";
import { LocalisationService } from "@spt/services/LocalisationService";
import { ProfileSnapshotService } from "@spt/services/ProfileSnapshotService";
import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil";
import { Watermark } from "@spt/utils/Watermark";
@ -24,12 +23,11 @@ export declare class ProfileHelper {
protected saveServer: SaveServer;
protected databaseService: DatabaseService;
protected itemHelper: ItemHelper;
protected profileSnapshotService: ProfileSnapshotService;
protected localisationService: LocalisationService;
protected configServer: ConfigServer;
protected cloner: ICloner;
protected inventoryConfig: IInventoryConfig;
constructor(logger: ILogger, hashUtil: HashUtil, watermark: Watermark, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileSnapshotService: ProfileSnapshotService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
constructor(logger: ILogger, hashUtil: HashUtil, watermark: Watermark, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/**
* Remove/reset a completed quest condtion from players profile quest data
* @param sessionID Session id
@ -47,19 +45,6 @@ export declare class ProfileHelper {
* @returns Array of IPmcData objects
*/
getCompleteProfile(sessionId: string): IPmcData[];
/**
* Fix xp doubling on post-raid xp reward screen by sending a 'dummy' profile to the post-raid screen
* Server saves the post-raid changes prior to the xp screen getting the profile, this results in the xp screen using
* the now updated profile values as a base, meaning it shows x2 xp gained
* Instead, clone the post-raid profile (so we dont alter its values), apply the pre-raid xp values to the cloned objects and return
* Delete snapshot of pre-raid profile prior to returning profile data
* @param sessionId Session id
* @param output pmc and scav profiles array
* @param pmcProfile post-raid pmc profile
* @param scavProfile post-raid scav profile
* @returns Updated profile array
*/
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

View File

@ -15,6 +15,7 @@ import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRo
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 { IBotConfig } from "@spt/models/spt/config/IBotConfig";
import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig";
import { IRagfairConfig, ITieredFlea } from "@spt/models/spt/config/IRagfairConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
@ -55,6 +56,7 @@ export declare class RagfairOfferHelper {
protected static goodSoldTemplate: string;
protected ragfairConfig: IRagfairConfig;
protected questConfig: IQuestConfig;
protected botConfig: IBotConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, traderHelper: TraderHelper, saveServer: SaveServer, itemHelper: ItemHelper, botHelper: BotHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, localeService: LocaleService, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer);
/**
* Passthrough to ragfairOfferService.getOffers(), get flea offers a player should see
@ -65,7 +67,7 @@ export declare class RagfairOfferHelper {
* @returns Offers the player should see
*/
getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, pmcData: IPmcData): IRagfairOffer[];
protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean;
protected checkAndLockOfferFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): void;
/**
* 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

View File

@ -1,5 +1,5 @@
import { IItem } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem, Props } from "@spt/models/eft/common/tables/ITemplateItem";
import { IProps, ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
@ -42,5 +42,5 @@ export declare class RepairHelper {
* @param traderQualityMultipler Different traders produce different loss values
* @returns Amount to reduce max durability by
*/
protected getRandomisedWeaponRepairDegradationValue(itemProps: Props, isRepairKit: boolean, weaponMax: number, traderQualityMultipler: number): number;
protected getRandomisedWeaponRepairDegradationValue(itemProps: IProps, isRepairKit: boolean, weaponMax: number, traderQualityMultipler: number): number;
}

View File

@ -0,0 +1,25 @@
import { DateTime } from "@spt/models/enums/DateTime";
import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { TimeUtil } from "@spt/utils/TimeUtil";
export declare class WeatherHelper {
protected logger: ILogger;
protected timeUtil: TimeUtil;
protected configServer: ConfigServer;
protected weatherConfig: IWeatherConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, configServer: ConfigServer);
/**
* Get the current in-raid time
* @param currentDate (new Date())
* @returns Date object of current in-raid time
*/
getInRaidTime(timestamp?: number): Date;
/**
* Is the current raid at nighttime
* @param timeVariant PASS OR CURR (from raid settings)
* @returns True when nighttime
*/
isNightTime(timeVariant: DateTime): boolean;
isHourAtNightTime(currentHour: number): boolean;
}

View File

@ -1,6 +1,6 @@
import { ModLoadOrder } from "@spt/loaders/ModLoadOrder";
import { ModTypeCheck } from "@spt/loaders/ModTypeCheck";
import { ModDetails } from "@spt/models/eft/profile/ISptProfile";
import { IModDetails } from "@spt/models/eft/profile/ISptProfile";
import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig";
import { IModLoader } from "@spt/models/spt/mod/IModLoader";
import { IPackageJsonData } from "@spt/models/spt/mod/IPackageJsonData";
@ -36,7 +36,7 @@ export declare class PreSptModLoader implements IModLoader {
*/
getImportedModsNames(): string[];
getImportedModDetails(): Record<string, IPackageJsonData>;
getProfileModsGroupedByModName(profileMods: ModDetails[]): ModDetails[];
getProfileModsGroupedByModName(profileMods: IModDetails[]): IModDetails[];
getModPath(mod: string): string;
protected importModsAsync(): Promise<void>;
protected sortMods(prev: string, next: string, missingFromOrderJSON: Record<string, boolean>): number;

View File

@ -299,7 +299,7 @@ export interface IInsuredItem {
itemId: string;
}
export interface IHideout {
Production: Record<string, IProductive>;
Production: Record<string, IProduction>;
Areas: IBotHideoutArea[];
Improvements: Record<string, IHideoutImprovement>;
HideoutCounters: IHideoutCounters;
@ -347,8 +347,8 @@ export interface IProductive {
}
export interface IProduction extends IProductive {
RecipeId: string;
SkipTime: number;
ProductionTime: number;
SkipTime?: number;
ProductionTime?: number;
}
export interface IScavCase extends IProductive {
RecipeId: string;

View File

@ -4,10 +4,10 @@ export interface ICustomizationItem {
_name: string;
_parent: string;
_type: string;
_props: Props;
_props: IProps;
_proto: string;
}
export interface Props {
export interface IProps {
Name: string;
ShortName: string;
Description: string;

View File

@ -1,5 +1,5 @@
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Dialogue, IUserBuilds } from "@spt/models/eft/profile/ISptProfile";
import { IDialogue, IUserBuilds } from "@spt/models/eft/profile/ISptProfile";
export interface IProfileTemplates {
Standard: IProfileSides;
"Left Behind": IProfileSides;
@ -19,7 +19,7 @@ export interface IProfileSides {
export interface ITemplateSide {
character: IPmcData;
suits: string[];
dialogues: Record<string, Dialogue>;
dialogues: Record<string, IDialogue>;
userbuilds: IUserBuilds;
trader: IProfileTraderTemplate;
}

View File

@ -17,21 +17,19 @@ export interface IQuest {
image: string;
type: QuestTypeEnum;
isKey: boolean;
/** @deprecated - Likely not used, use 'status' instead */
questStatus: QuestStatus;
restartable: boolean;
instantComplete: boolean;
secretQuest: boolean;
startedMessageText: string;
successMessageText: string;
acceptPlayerMessage: string;
acceptPlayerMessage?: string;
declinePlayerMessage: string;
completePlayerMessage: string;
templateId: string;
completePlayerMessage?: string;
templateId?: string;
rewards: IQuestRewards;
/** Becomes 'AppearStatus' inside client */
status: string | number;
KeyQuest: boolean;
status?: string | number;
KeyQuest?: boolean;
changeQuestMessageText: string;
/** "Pmc" or "Scav" */
side: string;
@ -39,10 +37,10 @@ export interface IQuest {
sptStatus?: QuestStatus;
}
export interface IQuestConditionTypes {
Started: IQuestCondition[];
Started?: IQuestCondition[];
AvailableForFinish: IQuestCondition[];
AvailableForStart: IQuestCondition[];
Success: IQuestCondition[];
Success?: IQuestCondition[];
Fail: IQuestCondition[];
}
export interface IQuestCondition {
@ -53,9 +51,9 @@ export interface IQuestCondition {
visibilityConditions?: IVisibilityCondition[];
globalQuestCounterId?: string;
parentId?: string;
target: string[] | string;
target?: string[] | string;
value?: string | number;
type?: boolean;
type?: boolean | string;
status?: QuestStatus[];
availableAfter?: number;
dispersion?: number;
@ -64,10 +62,10 @@ export interface IQuestCondition {
isResetOnConditionFailed?: boolean;
isNecessary?: boolean;
doNotResetIfCounterCompleted?: boolean;
dogtagLevel?: number;
dogtagLevel?: number | string;
traderId?: string;
maxDurability?: number;
minDurability?: number;
maxDurability?: number | string;
minDurability?: number | string;
counter?: IQuestConditionCounter;
plantTime?: number;
zoneId?: string;
@ -82,7 +80,7 @@ export interface IQuestConditionCounter {
}
export interface IQuestConditionCounterCondition {
id: string;
dynamicLocale: boolean;
dynamicLocale?: boolean;
target?: string[] | string;
completeInSeconds?: number;
energy?: IValueCompare;
@ -90,7 +88,7 @@ export interface IQuestConditionCounterCondition {
hydration?: IValueCompare;
time?: IValueCompare;
compareMethod?: string;
value?: number;
value?: number | string;
weapon?: string[];
distance?: ICounterConditionDistance;
equipmentInclusive?: string[][];
@ -128,7 +126,7 @@ export interface IVisibilityCondition {
target: string;
value?: number;
dynamicLocale?: boolean;
oneSessionOnly: boolean;
oneSessionOnly?: boolean;
conditionType: string;
}
export interface IQuestRewards {
@ -152,4 +150,8 @@ export interface IQuestReward {
traderId?: string;
unknown?: boolean;
findInRaid?: boolean;
/** Game editions whitelisted to get reward */
availableInGameEditions?: string[];
/** Game editions blacklisted from getting reward */
notAvailableInGameEditions?: string[];
}

View File

@ -4,11 +4,11 @@ export interface ITemplateItem {
_name: string;
_parent: string;
_type: ItemType;
_props: Props;
_props: IProps;
_proto?: string;
}
export interface Props {
AllowSpawnOnLocations?: any[];
export interface IProps {
AllowSpawnOnLocations?: string[];
BeltMagazineRefreshCount?: number;
ChangePriceCoef?: number;
FixedPrice?: boolean;
@ -175,7 +175,7 @@ export interface Props {
spawnRarity?: string;
minCountSpawn?: number;
maxCountSpawn?: number;
openedByKeyID?: any[];
openedByKeyID?: string[];
RigLayoutName?: string;
MaxDurability?: number;
armorZone?: string[];

View File

@ -1,6 +1,6 @@
import { Message } from "@spt/models/eft/profile/ISptProfile";
import { IMessage } from "@spt/models/eft/profile/ISptProfile";
export interface IGetAllAttachmentsResponse {
messages: Message[];
messages: IMessage[];
profiles: any[];
hasMessagesWithRewards: boolean;
}

View File

@ -1,6 +1,6 @@
import { IUserDialogInfo, Message } from "@spt/models/eft/profile/ISptProfile";
import { IMessage, IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
export interface IGetMailDialogViewResponseData {
messages: Message[];
messages: IMessage[];
profiles: IUserDialogInfo[];
hasMessagesWithRewards: boolean;
}

View File

@ -1,8 +1,8 @@
export interface IVersionValidateRequestData {
version: Version;
version: IVersion;
develop: boolean;
}
export interface Version {
export interface IVersion {
major: string;
minor: string;
game: string;

View File

@ -1,4 +1,36 @@
export interface IWorkoutData extends Record<string, any> {
skills: any;
effects: any;
skills: IWorkoutSkills;
effects: IWorkoutEffects;
}
export interface IWorkoutSkills {
Common: IWorkoutSkillCommon[];
Mastering: any[];
Bonuses: any;
Points: number;
}
export interface IWorkoutSkillCommon {
Id: string;
Progress: number;
PointsEarnedDuringSession: number;
LastAccess: number;
}
export interface IWorkoutEffects {
Effects: IWorkoutEffectsParts;
Hydration: number;
Energy: number;
}
export interface IWorkoutEffectsParts {
Head: IWorkoutBodyPart;
Chest: IWorkoutBodyPart;
Stomach: IWorkoutBodyPart;
LeftArm: IWorkoutBodyPart;
RightArm: IWorkoutBodyPart;
LeftLeg: IWorkoutBodyPart;
RightLeg: IWorkoutBodyPart;
Common: IWorkoutBodyPart;
}
export interface IWorkoutBodyPart {
Regeneration: number;
Fracture: number;
MildMusclePain: number;
}

View File

@ -1,5 +0,0 @@
export interface HideoutUpgradeCompleteRequestData {
Action: string;
areaType: number;
timestamp: number;
}

View File

@ -12,16 +12,16 @@ export interface IHideoutArea {
displayLevel: boolean;
enableAreaRequirements: boolean;
parentArea?: string;
stages: Record<string, Stage>;
stages: Record<string, IStage>;
}
export interface IAreaRequirement {
areaType: number;
requiredlevel: number;
type: string;
}
export interface Stage {
export interface IStage {
autoUpgrade: boolean;
bonuses: StageBonus[];
bonuses: IStageBonus[];
constructionTime: number;
/** Containers inventory tpl */
container?: string;
@ -63,7 +63,7 @@ export interface IStageRequirement extends IRequirementBase {
skillName?: string;
skillLevel?: number;
}
export interface StageBonus {
export interface IStageBonus {
value: number;
passive: boolean;
production: boolean;

View File

@ -3,10 +3,10 @@ export interface IHideoutImproveAreaRequestData {
/** Hideout area id from areas.json */
id: string;
areaType: number;
items: HideoutItem[];
items: IHideoutItem[];
timestamp: number;
}
export interface HideoutItem {
export interface IHideoutItem {
/** Hideout inventory id that was used by improvement action */
id: string;
count: number;

View File

@ -7,7 +7,7 @@ export interface IHideoutProductionData {
export interface IHideoutProduction {
_id: string;
areaType: number;
requirements: Requirement[];
requirements: IRequirement[];
productionTime: number;
/** Tpl of item being crafted */
endProduct: string;
@ -18,7 +18,7 @@ export interface IHideoutProduction {
count: number;
productionLimitCount: number;
}
export interface Requirement extends IRequirementBase {
export interface IRequirement extends IRequirementBase {
templateId?: string;
count?: number;
isEncoded?: boolean;
@ -33,7 +33,7 @@ export interface IRequirementBase {
}
export type IScavRecipe = {
_id: string;
requirements: Requirement[];
requirements: IRequirement[];
productionTime: number;
endProducts: IEndProducts;
};

View File

@ -2,16 +2,16 @@ import { MinMax } from "@spt/models/common/MinMax";
export interface IHideoutScavCase {
_id: string;
ProductionTime: number;
Requirements: Requirement[];
EndProducts: EndProducts;
Requirements: IRequirement[];
EndProducts: IEndProducts;
}
export interface Requirement {
export interface IRequirement {
templateId: string;
count: number;
isFunctional: boolean;
type: string;
}
export interface EndProducts {
export interface IEndProducts {
Common: MinMax;
Rare: MinMax;
Superrare: MinMax;

View File

@ -1,15 +1,15 @@
export interface IHideoutScavCaseStartRequestData {
Action: "HideoutScavCaseProductionStart";
recipeId: string;
items: HideoutItem[];
tools: Tool[];
items: IHideoutItem[];
tools: ITool[];
timestamp: number;
}
export interface HideoutItem {
export interface IHideoutItem {
id: string;
count: number;
}
export interface Tool {
export interface ITool {
id: string;
count: number;
}

View File

@ -1,10 +1,10 @@
export interface IHideoutUpgradeRequestData {
Action: "HideoutUpgrade";
areaType: number;
items: HideoutItem[];
items: IHideoutItem[];
timestamp: number;
}
export interface HideoutItem {
export interface IHideoutItem {
count: number;
id: string;
}

View File

@ -1,6 +1,6 @@
import { Container, IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData";
import { IContainer, IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData";
export interface IInventoryAddRequestData extends IInventoryBaseActionRequestData {
Action: "Add";
item: string;
container: Container;
container: IContainer;
}

View File

@ -2,18 +2,18 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBas
import { IItemLocation } from "@spt/models/eft/common/tables/IItem";
export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData {
}
export interface To {
export interface ITo {
id: string;
container: string;
location?: IItemLocation | number;
isSearched?: boolean;
}
export interface Container {
export interface IContainer {
id: string;
container: string;
location?: Location | number;
location?: ILocation | number;
}
export interface Location {
export interface ILocation {
x: number;
y: number;
r: string;

View File

@ -2,9 +2,9 @@ import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInve
export interface IInventoryCreateMarkerRequestData extends IInventoryBaseActionRequestData {
Action: "CreateMapMarker";
item: string;
mapMarker: MapMarker;
mapMarker: IMapMarker;
}
export interface MapMarker {
export interface IMapMarker {
Type: string;
X: number;
Y: number;

View File

@ -4,9 +4,9 @@ export interface IInventoryEditMarkerRequestData extends IInventoryBaseActionReq
item: string;
X: number;
Y: number;
mapMarker: MapMarker;
mapMarker: IMapMarker;
}
export interface MapMarker {
export interface IMapMarker {
Type: string;
X: number;
Y: number;

View File

@ -1,6 +1,6 @@
import { IInventoryBaseActionRequestData, To } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData";
import { IInventoryBaseActionRequestData, ITo } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData";
export interface IInventoryMoveRequestData extends IInventoryBaseActionRequestData {
Action: "Move";
item: string;
to: To;
to: ITo;
}

View File

@ -1,4 +1,4 @@
import { Container, IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData";
import { IContainer, IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData";
export interface IInventorySplitRequestData extends IInventoryBaseActionRequestData {
Action: "Split";
/** Id of item to split */
@ -6,6 +6,6 @@ export interface IInventorySplitRequestData extends IInventoryBaseActionRequestD
/** Id of new item stack */
newItem: string;
/** Destination new item will be placed in */
container: Container;
container: IContainer;
count: number;
}

View File

@ -1,11 +1,11 @@
import { OwnerInfo } from "@spt/models/eft/common/request/IBaseInteractionRequestData";
import { IInventoryBaseActionRequestData, To } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData";
import { IInventoryBaseActionRequestData, ITo } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData";
export interface IInventorySwapRequestData extends IInventoryBaseActionRequestData {
Action: "Swap";
item: string;
to: To;
to: ITo;
item2: string;
to2: To;
to2: ITo;
fromOwner2: OwnerInfo;
toOwner2: OwnerInfo;
}

View File

@ -3,9 +3,9 @@ export interface IOpenRandomLootContainerRequestData extends IInventoryBaseActio
Action: "OpenRandomLootContainer";
/** Container item id being opened */
item: string;
to: To[];
to: ITo[];
}
export interface To {
export interface ITo {
/** Player character (pmc/scav) id items will be sent to */
id: string;
}

View File

@ -28,7 +28,7 @@ export interface IProfileChange {
improvements: Record<string, IHideoutImprovement>;
skills: ISkills;
health: IHealth;
traderRelations: Record<string, TraderData>;
traderRelations: Record<string, ITraderData>;
moneyTransferLimitData: IMoneyTransferLimits;
repeatableQuests?: IPmcDataRepeatableQuest[];
recipeUnlocked: Record<string, boolean>;
@ -60,7 +60,7 @@ export interface IItemChanges {
del: IProduct[];
}
/** Related to TraderInfo */
export interface TraderData {
export interface ITraderData {
salesSum: number;
standing: number;
loyalty: number;

View File

@ -1,19 +1,19 @@
export interface IItemEventRouterRequest {
data: Daum[];
data: IDaum[];
tm: number;
reload: number;
}
export interface Daum {
export interface IDaum {
Action: string;
item: string;
to: To;
to: ITo;
}
export interface To {
export interface ITo {
id: string;
container: string;
location?: Location;
location?: ILocation;
}
export interface Location {
export interface ILocation {
x: number;
y: number;
r: string;

View File

@ -1,4 +1,4 @@
import { Spt } from "../profile/ISptProfile";
import { ISpt } from "../profile/ISptProfile";
export interface IMiniProfile {
username: string;
nickname: string;
@ -10,5 +10,5 @@ export interface IMiniProfile {
maxlvl: number;
edition: string;
profileId: string;
sptData: Spt;
sptData: ISpt;
}

View File

@ -1,5 +1,5 @@
import { LootItem } from "@spt/models/spt/services/LootItem";
import { ILootItem } from "@spt/models/spt/services/LootItem";
export interface IAirdropLootResult {
dropType: string;
loot: LootItem[];
loot: ILootItem[];
}

View File

@ -0,0 +1,3 @@
export interface IGetAirdropLootRequest {
containerId: string;
}

View File

@ -13,6 +13,7 @@ export interface IEndLocalRaidRequestData {
}
export interface IEndRaidResult {
profile: IPmcData;
/** "Survived/Transit etc" */
result: string;
ExitStatus: ExitStatus;
killerId: string;

View File

@ -15,15 +15,15 @@ export interface IRaidSettings {
isLocationTransition: boolean;
timeVariant: DateTime;
metabolismDisabled: boolean;
timeAndWeatherSettings: TimeAndWeatherSettings;
botSettings: BotSettings;
wavesSettings: WavesSettings;
timeAndWeatherSettings: ITimeAndWeatherSettings;
botSettings: IBotSettings;
wavesSettings: IWavesSettings;
side: SideType;
raidMode: RaidMode;
playersSpawnPlace: PlayersSpawnPlace;
CanShowGroupPreview: boolean;
}
export interface TimeAndWeatherSettings {
export interface ITimeAndWeatherSettings {
isRandomTime: boolean;
isRandomWeather: boolean;
cloudinessType: CloudinessType;
@ -33,11 +33,11 @@ export interface TimeAndWeatherSettings {
timeFlowType: TimeFlowType;
hourOfDay: number;
}
export interface BotSettings {
export interface IBotSettings {
isScavWars: boolean;
botAmount: BotAmount;
}
export interface WavesSettings {
export interface IWavesSettings {
botAmount: BotAmount;
botDifficulty: BotDifficulty;
isBosses: boolean;

View File

@ -6,6 +6,8 @@ export interface IStartLocalRaidRequestData {
playerSide: string;
isLocationTransition: boolean;
transition: IStartLocalRaidTransition;
/** Should loot generation be skipped, default false */
sptSkipLootGeneration?: boolean;
}
export interface IStartLocalRaidTransition {
isLocationTransition: boolean;

View File

@ -6,21 +6,21 @@ import { MessageType } from "@spt/models/enums/MessageType";
import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails";
export interface ISptProfile {
info: Info;
characters: Characters;
characters: ICharacters;
/** Clothing purchases */
suits: string[];
userbuilds: IUserBuilds;
dialogues: Record<string, Dialogue>;
spt: Spt;
vitality: Vitality;
inraid: Inraid;
insurance: Insurance[];
dialogues: Record<string, IDialogue>;
spt: ISpt;
vitality: IVitality;
inraid: IInraid;
insurance: IInsurance[];
/** Assort purchases made by player since last trader refresh */
traderPurchases?: Record<string, Record<string, TraderPurchaseData>>;
traderPurchases?: Record<string, Record<string, ITraderPurchaseData>>;
/** Achievements earned by player */
achievements: Record<string, number>;
}
export declare class TraderPurchaseData {
export declare class ITraderPurchaseData {
count: number;
purchaseTimestamp: number;
}
@ -34,7 +34,7 @@ export interface Info {
wipe: boolean;
edition: string;
}
export interface Characters {
export interface ICharacters {
pmc: IPmcData;
scav: IPmcData;
}
@ -74,13 +74,13 @@ export interface IDefaultEquipmentPreset extends IUserBuild {
BuildType: EquipmentBuildType;
type: string;
}
export interface Dialogue {
export interface IDialogue {
attachmentsNew: number;
new: number;
type: MessageType;
Users?: IUserDialogInfo[];
pinned: boolean;
messages: Message[];
messages: IMessage[];
_id: string;
}
export interface IUserDialogInfo {
@ -95,16 +95,16 @@ export interface IUserDialogDetails {
MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
}
export interface DialogueInfo {
export interface IDialogueInfo {
attachmentsNew: number;
new: number;
_id: string;
type: MessageType;
pinned: boolean;
Users?: IUserDialogInfo[];
message: MessagePreview;
message: IMessagePreview;
}
export interface Message {
export interface IMessage {
_id: string;
uid: string;
type: MessageType;
@ -116,7 +116,7 @@ export interface Message {
replyTo?: IReplyTo;
hasRewards?: boolean;
rewardCollected: boolean;
items?: MessageItems;
items?: IMessageItems;
maxStorageTime?: number;
systemData?: ISystemData;
profileChangeEvents?: IProfileChangeEvent[];
@ -128,7 +128,7 @@ export interface IReplyTo {
dt: number;
text?: string;
}
export interface MessagePreview {
export interface IMessagePreview {
uid: string;
type: MessageType;
dt: number;
@ -136,7 +136,7 @@ export interface MessagePreview {
text?: string;
systemData?: ISystemData;
}
export interface MessageItems {
export interface IMessageItems {
stash?: string;
data?: IItem[];
}
@ -156,17 +156,13 @@ export interface IUpdatableChatMember {
Ignored: boolean;
Banned: boolean;
}
export interface DateTime {
date: string;
time: string;
}
export interface Spt {
export interface ISpt {
/** What version of SPT was this profile made with */
version: string;
/** What mods has this profile loaded at any point in time */
mods?: ModDetails[];
mods?: IModDetails[];
/** What gifts has this profile received and how many */
receivedGifts?: ReceivedGift[];
receivedGifts?: IReceivedGift[];
/** item TPLs blacklisted from being sold on flea for this profile */
blacklistedItemTpls?: string[];
/** key: daily type */
@ -174,23 +170,23 @@ export interface Spt {
/** When was a profile migrated, value is timestamp */
migrations?: Record<string, number>;
}
export interface ModDetails {
export interface IModDetails {
name: string;
version: string;
author: string;
dateAdded: number;
url: string;
}
export interface ReceivedGift {
export interface IReceivedGift {
giftId: string;
timestampLastAccepted: number;
current: number;
}
export interface Vitality {
health: Health;
effects: Effects;
export interface IVitality {
health: IHealth;
effects: IEffects;
}
export interface Health {
export interface IHealth {
Hydration: number;
Energy: number;
Temperature: number;
@ -202,35 +198,35 @@ export interface Health {
LeftLeg: number;
RightLeg: number;
}
export interface Effects {
Head: Head;
Chest: Chest;
Stomach: Stomach;
LeftArm: LeftArm;
RightArm: RightArm;
LeftLeg: LeftLeg;
RightLeg: RightLeg;
export interface IEffects {
Head: IHead;
Chest: IChest;
Stomach: IStomach;
LeftArm: ILeftArm;
RightArm: IRightArm;
LeftLeg: ILeftLeg;
RightLeg: IRightLeg;
}
export type Head = {};
export type Chest = {};
export type Stomach = {};
export interface LeftArm {
export type IHead = {};
export type IChest = {};
export type IStomach = {};
export interface ILeftArm {
Fracture?: number;
}
export interface RightArm {
export interface IRightArm {
Fracture?: number;
}
export interface LeftLeg {
export interface ILeftLeg {
Fracture?: number;
}
export interface RightLeg {
export interface IRightLeg {
Fracture?: number;
}
export interface Inraid {
export interface IInraid {
location: string;
character: string;
}
export interface Insurance {
export interface IInsurance {
scheduledTime: number;
traderId: string;
maxStorageTime: number;
@ -239,7 +235,7 @@ export interface Insurance {
messageTemplateId: string;
items: IItem[];
}
export interface MessageContentRagfair {
export interface IMessageContentRagfair {
offerId: string;
count: number;
handbookId: string;

View File

@ -2,9 +2,9 @@ export interface IAddOfferRequestData {
Action: string;
sellInOnePiece: boolean;
items: string[];
requirements: Requirement[];
requirements: IRequirement[];
}
export interface Requirement {
export interface IRequirement {
_tpl: string;
count: number;
level: number;

View File

@ -5,7 +5,7 @@ export interface IRagfairOffer {
sellResult?: ISellResult[];
_id: string;
items: IItem[];
requirements: OfferRequirement[];
requirements: IOfferRequirement[];
root: string;
intId: number;
/** Handbook price */
@ -14,6 +14,7 @@ export interface IRagfairOffer {
requirementsCost: number;
startTime: number;
endTime: number;
/** True when offer is sold as pack */
sellInOnePiece: boolean;
/** Rouble price - same as requirementsCost */
summaryCost: number;
@ -25,7 +26,7 @@ export interface IRagfairOffer {
buyRestrictionCurrent?: number;
locked?: boolean;
}
export interface OfferRequirement {
export interface IOfferRequirement {
_tpl: string;
count: number;
onlyFunctional: boolean;

View File

@ -1,10 +1,10 @@
import { IBaseRepairActionDataRequest } from "@spt/models/eft/repair/IBaseRepairActionDataRequest";
export interface IRepairActionDataRequest extends IBaseRepairActionDataRequest {
Action: "Repair";
repairKitsInfo: RepairKitsInfo[];
repairKitsInfo: IRepairKitsInfo[];
target: string;
}
export interface RepairKitsInfo {
export interface IRepairKitsInfo {
_id: string;
count: number;
}

View File

@ -2,9 +2,9 @@ import { IBaseRepairActionDataRequest } from "@spt/models/eft/repair/IBaseRepair
export interface ITraderRepairActionDataRequest extends IBaseRepairActionDataRequest {
Action: "TraderRepair";
tid: string;
repairItems: RepairItem[];
repairItems: IRepairItem[];
}
export interface RepairItem {
export interface IRepairItem {
_id: string;
count: number;
}

View File

@ -12,12 +12,15 @@ export interface IWeather {
temp: number;
fog: number;
rain_intensity: number;
/** 1 - 3 light rain, 3+ 'rain' */
rain: number;
wind_gustiness: number;
wind_direction: WindDirection;
wind_speed: number;
/** < -0.4 = clear day */
cloud: number;
time: string;
date: string;
timestamp: number;
sptInRaidTimestamp: number;
}

View File

@ -1,8 +1,8 @@
import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter";
import { Message } from "@spt/models/eft/profile/ISptProfile";
import { IMessage } from "@spt/models/eft/profile/ISptProfile";
import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent";
export interface IWsChatMessageReceived extends IWsNotificationEvent {
dialogId: string;
message: Message;
message: IMessage;
profiles?: IGroupCharacter[];
}

View File

@ -1,6 +1,13 @@
export declare enum AirdropTypeEnum {
COMMON = "Common",
SUPPLY = "Supply",
MEDICAL = "Medical",
WEAPON_ARMOR = "Weapon"
}
export declare enum SptAirdropTypeEnum {
COMMON = "mixed",
SUPPLY = "barter",
FOOD_MEDICAL = "foodMedical",
WEAPON_ARMOR = "weaponArmor"
WEAPON_ARMOR = "weaponArmor",
RADAR = "radar"
}

View File

@ -54,7 +54,5 @@ export declare enum WildSpawnTypeNumber {
SKIER = 53,
SECTANTPREDVESTNIK = 57,
SECTANTPRIZRAK = 58,
SECTANTONI = 59,
SPTUSEC = 100,
SPTBEAR = 101
SECTANTONI = 59
}

View File

@ -1,5 +1,5 @@
export declare enum QteEffectType {
FINISH_EFFECT = "FinishEffect",
SINGLE_SUCCESS_EFFECT = "SingleSuccessEffect",
SINGLE_FAIL_EFFECT = "SingleFailEffect"
FINISH_EFFECT = "finishEffect",
SINGLE_SUCCESS_EFFECT = "singleSuccessEffect",
SINGLE_FAIL_EFFECT = "singleFailEffect"
}

View File

@ -1,5 +1,5 @@
import { MinMax } from "@spt/models/common/MinMax";
export interface BotGenerationDetails {
export interface IBotGenerationDetails {
/** Should the bot be generated as a PMC */
isPmc: boolean;
/** assault/pmcBot etc */

View File

@ -1,6 +1,7 @@
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";
import { EquipmentFilters, IRandomisationDetails } from "@spt/models/spt/config/IBotConfig";
import { IBotData } from "./IGenerateWeaponRequest";
export interface IGenerateEquipmentProperties {
/** Root Slot being generated */
rootEquipmentSlot: string;
@ -9,14 +10,13 @@ export interface IGenerateEquipmentProperties {
modPool: IMods;
/** Dictionary of mod items and their chance to spawn for this bot type */
spawnChances: IChances;
/** Role being generated for */
botRole: string;
/** Level of bot being generated */
botLevel: number;
/** Bot-specific properties */
botData: IBotData;
inventory: PmcInventory;
botEquipmentConfig: EquipmentFilters;
/** Settings from bot.json to adjust how item is generated */
randomisationDetails: RandomisationDetails;
randomisationDetails: IRandomisationDetails;
/** OPTIONAL - Do not generate mods for tpls in this array */
generateModsBlacklist?: string[];
generatingPlayerLevel: number;
}

View File

@ -1,7 +1,7 @@
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 {
export interface IGenerateWeaponResult {
weapon: IItem[];
chosenAmmoTpl: string;
chosenUbglAmmoTpl: string;

View File

@ -2,7 +2,7 @@ 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest";
import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig";
import { IEquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig";
export interface IModToSpawnRequest {
/** Slot mod will fit into */
modSlot: string;
@ -11,7 +11,7 @@ export interface IModToSpawnRequest {
/** Parent slot the item will be a part of */
botWeaponSightWhitelist: Record<string, string[]>;
/** Blacklist to prevent mods from being picked */
botEquipBlacklist: EquipmentFilterDetails;
botEquipBlacklist: IEquipmentFilterDetails;
/** Pool of items to pick from */
itemModPool: Record<string, string[]>;
/** Array with only weapon tpl in it, ready for mods to be added */

View File

@ -14,11 +14,11 @@ import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"
import { ISetDialogReadRequestData } from "@spt/models/eft/dialog/ISetDialogReadRequestData";
import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData";
import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData";
import { DialogueInfo } from "@spt/models/eft/profile/ISptProfile";
import { IDialogueInfo } from "@spt/models/eft/profile/ISptProfile";
export interface IDialogueCallbacks {
getFriendList(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGetFriendListDataResponse>;
getChatServerList(url: string, info: IGetChatServerListRequestData, sessionID: string): IGetBodyResponseData<any[]>;
getMailDialogList(url: string, info: IGetMailDialogListRequestData, sessionID: string): IGetBodyResponseData<DialogueInfo[]>;
getMailDialogList(url: string, info: IGetMailDialogListRequestData, sessionID: string): IGetBodyResponseData<IDialogueInfo[]>;
getMailDialogView(url: string, info: IGetMailDialogViewRequestData, sessionID: string): IGetBodyResponseData<IGetMailDialogViewResponseData>;
getMailDialogInfo(url: string, info: IGetMailDialogInfoRequestData, sessionID: string): IGetBodyResponseData<any>;
removeDialog(url: string, info: IRemoveDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>;

View File

@ -1,11 +1,12 @@
import { MinMax } from "@spt/models/common/MinMax";
import { AirdropTypeEnum } from "@spt/models/enums/AirdropType";
import { AirdropTypeEnum, SptAirdropTypeEnum } from "@spt/models/enums/AirdropType";
import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig";
export interface IAirdropConfig extends IBaseConfig {
kind: "spt-airdrop";
airdropTypeWeightings: Record<AirdropTypeEnum, number>;
airdropTypeWeightings: Record<SptAirdropTypeEnum, number>;
/** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */
loot: Record<string, IAirdropLoot>;
customAirdropMapping: Record<string, SptAirdropTypeEnum>;
}
/** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */
export interface IAirdropChancePercent {
@ -20,6 +21,7 @@ export interface IAirdropChancePercent {
}
/** Loot inside crate */
export interface IAirdropLoot {
icon: AirdropTypeEnum;
/** Min/max of weapons inside crate */
weaponPresetCount?: MinMax;
/** Min/max of armors (head/chest/rig) inside crate */
@ -40,4 +42,6 @@ export interface IAirdropLoot {
armorLevelWhitelist?: number[];
/** Should boss items be added to airdrop crate */
allowBossItems: boolean;
useForcedLoot?: boolean;
forcedLoot?: Record<string, MinMax>;
}

View File

@ -5,7 +5,7 @@ import { IBotDurability } from "@spt/models/spt/config/IBotDurability";
export interface IBotConfig extends IBaseConfig {
kind: "spt-bot";
/** How many variants of each bot should be generated on raid start */
presetBatch: PresetBatch;
presetBatch: IPresetBatch;
/** Bot roles that should not have PMC types (pmcBEAR/pmcUSEC) added as enemies to */
botsToNotAddPMCsAsEnemiesTo: string[];
/** What bot types should be classified as bosses */
@ -44,6 +44,10 @@ export interface IBotConfig extends IBaseConfig {
/** What bottypes should be excluded from having loot generated on them (backpack/pocket/vest) does not disable food/drink/special/ */
disableLootOnBotTypes: string[];
assaultToBossConversion: IAssaultToBossConversion;
/** Max length a bots name can be */
botNameLengthLimit: number;
/** Bot roles that must have a unique name when generated vs other bots in raid */
botRolesThatMustHaveUniqueName: string[];
}
export interface IAssaultToBossConversion {
bossConvertEnabled: boolean;
@ -51,7 +55,7 @@ export interface IAssaultToBossConversion {
bossConvertMinMax: Record<string, MinMax>;
}
/** Number of bots to generate and store in cache on raid start per bot type */
export interface PresetBatch {
export interface IPresetBatch {
assault: number;
bossBully: number;
bossGluhar: number;
@ -100,7 +104,7 @@ export interface IWalletLootSettings {
}
export interface EquipmentFilters {
/** Limits for mod types per weapon .e.g. scopes */
weaponModLimits: ModLimits;
weaponModLimits: IModLimits;
/** Whitelist for weapon sight types allowed per gun */
weaponSightWhitelist: Record<string, string[]>;
/** Chance face shield is down/active */
@ -121,27 +125,27 @@ export interface EquipmentFilters {
/** What additional slot ids should be seen as required when choosing a mod to add to a weapon */
weaponSlotIdsToMakeRequired?: string[];
/** Adjust weighting/chances of items on bot by level of bot */
randomisation: RandomisationDetails[];
randomisation: IRandomisationDetails[];
/** Blacklist equipment by level of bot */
blacklist: EquipmentFilterDetails[];
blacklist: IEquipmentFilterDetails[];
/** Whitelist equipment by level of bot */
whitelist: EquipmentFilterDetails[];
whitelist: IEquipmentFilterDetails[];
/** Adjust equipment/ammo */
weightingAdjustmentsByBotLevel: WeightingAdjustmentDetails[];
weightingAdjustmentsByBotLevel: IWeightingAdjustmentDetails[];
/** Same as weightingAdjustments but based on player level instead of bot level */
weightingAdjustmentsByPlayerLevel?: WeightingAdjustmentDetails[];
weightingAdjustmentsByPlayerLevel?: IWeightingAdjustmentDetails[];
/** Should the stock mod be forced to spawn on bot */
forceStock?: boolean;
armorPlateWeighting?: IArmorPlateWeights[];
forceRigWhenNoVest?: boolean;
}
export interface ModLimits {
export interface IModLimits {
/** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */
scopeLimit?: number;
/** How many lasers or lights are allowed on a weapon - hard coded to work with TACTICAL_COMBO, and FLASHLIGHT */
lightLaserLimit?: number;
}
export interface RandomisationDetails {
export interface IRandomisationDetails {
/** Between what levels do these randomisation setting apply to */
levelRange: MinMax;
generation?: Record<string, IGenerationData>;
@ -155,8 +159,13 @@ export interface RandomisationDetails {
weaponMods?: Record<string, number>;
/** Equipment mod chances */
equipmentMods?: Record<string, number>;
nighttimeChanges?: INighttimeChanges;
}
export interface EquipmentFilterDetails {
export interface INighttimeChanges {
/** Applies changes to values stored in equipmentMods */
equipmentModsModifiers: Record<string, number>;
}
export interface IEquipmentFilterDetails {
/** Between what levels do these equipment filter setting apply to */
levelRange: MinMax;
/** Key: mod slot name e.g. mod_magazine, value: item tpls */
@ -164,7 +173,7 @@ export interface EquipmentFilterDetails {
/** Key: cartridge type e.g. Caliber23x75, value: item tpls */
cartridge: Record<string, string[]>;
}
export interface WeightingAdjustmentDetails {
export interface IWeightingAdjustmentDetails {
/** Between what levels do these weight settings apply to */
levelRange: MinMax;
/** Key: ammo type e.g. Caliber556x45NATO, value: item tpl + weight */

View File

@ -1,6 +1,6 @@
export interface IBotDurability {
default: IDefaultDurability;
pmc: PmcDurability;
pmc: IPmcDurability;
boss: IBotDurability;
follower: IBotDurability;
assault: IBotDurability;
@ -20,7 +20,7 @@ export interface IDefaultDurability {
armor: IArmorDurability;
weapon: IWeaponDurability;
}
export interface PmcDurability {
export interface IPmcDurability {
armor: IPmcDurabilityArmor;
weapon: IWeaponDurability;
}

View File

@ -1,14 +1,14 @@
import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig";
export interface IHealthConfig extends IBaseConfig {
kind: "spt-health";
healthMultipliers: HealthMultipliers;
save: Save;
healthMultipliers: IHealthMultipliers;
save: ISave;
}
export interface HealthMultipliers {
export interface IHealthMultipliers {
death: number;
blacked: number;
}
export interface Save {
export interface ISave {
health: boolean;
effects: boolean;
}

View File

@ -18,11 +18,11 @@ export interface ICultistCircleSettings {
maxRewardItemCount: number;
maxAttemptsToPickRewardsWithinBudget: number;
rewardPriceMultiplerMinMax: MinMax;
craftTimeThreshholds: CraftTimeThreshhold[];
craftTimeThreshholds: ICraftTimeThreshhold[];
/** -1 means no override */
craftTimeOverride: number;
/** Specific reward pool when player sacrificed one specific item */
directRewards: Record<string, DirectRewardSettings>;
directRewards: Record<string, IDirectRewardSettings>;
directRewardStackSize: Record<string, MinMax>;
/** Item tpls to exclude from the reward pool */
rewardItemBlacklist: string[];
@ -30,10 +30,10 @@ export interface ICultistCircleSettings {
additionalRewardItemPool: string[];
currencyRewards: Record<string, MinMax>;
}
export interface CraftTimeThreshhold extends MinMax {
export interface ICraftTimeThreshhold extends MinMax {
craftTimeSeconds: number;
}
export interface DirectRewardSettings {
export interface IDirectRewardSettings {
rewardTpls: string[];
craftTimeSeconds: number;
}

View File

@ -2,9 +2,9 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig";
export interface IInRaidConfig extends IBaseConfig {
kind: "spt-inraid";
/** Overrides to apply to the pre-raid settings screen */
raidMenuSettings: RaidMenuSettings;
raidMenuSettings: IRaidMenuSettings;
/** What effects should be saved post-raid */
save: Save;
save: ISave;
/** Names of car extracts */
carExtracts: string[];
/** Names of coop extracts */
@ -14,7 +14,7 @@ export interface IInRaidConfig extends IBaseConfig {
/** Fence rep gain from a single coop extract */
coopExtractBaseStandingGain: number;
/** Fence rep gain when successfully extracting as pscav */
scavExtractGain: number;
scavExtractStandingGain: number;
/** The likelihood of PMC eliminating a minimum of 2 scavs while you engage them as a pscav. */
pmcKillProbabilityForScavGain: number;
/** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */
@ -24,7 +24,7 @@ export interface IInRaidConfig extends IBaseConfig {
/** Percentage chance a player scav hot is hostile to the player when scavving */
playerScavHostileChancePercent: number;
}
export interface RaidMenuSettings {
export interface IRaidMenuSettings {
aiAmount: string;
aiDifficulty: string;
bossEnabled: boolean;
@ -34,7 +34,7 @@ export interface RaidMenuSettings {
randomWeather: boolean;
randomTime: boolean;
}
export interface Save {
export interface ISave {
/** Should loot gained from raid be saved */
loot: boolean;
}

View File

@ -4,14 +4,14 @@ export interface IInventoryConfig extends IBaseConfig {
kind: "spt-inventory";
/** Should new items purchased by flagged as found in raid */
newItemsMarkedFound: boolean;
randomLootContainers: Record<string, RewardDetails>;
randomLootContainers: Record<string, IRewardDetails>;
sealedAirdropContainer: ISealedAirdropContainerSettings;
/** Contains item tpls that the server should consider money and treat the same as roubles/euros/dollars */
customMoneyTpls: string[];
/** Multipliers for skill gain when inside menus, NOT in-game */
skillGainMultiplers: Record<string, number>;
}
export interface RewardDetails {
export interface IRewardDetails {
rewardCount: number;
foundInRaid: boolean;
rewardTplPool?: Record<string, number>;

View File

@ -2,16 +2,16 @@ 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";
karmaLevel: Record<string, KarmaLevel>;
karmaLevel: Record<string, IKarmaLevel>;
}
export interface KarmaLevel {
export interface IKarmaLevel {
botTypeForLoot: string;
modifiers: Modifiers;
modifiers: IModifiers;
itemLimits: ItemLimits;
equipmentBlacklist: Record<string, string[]>;
lootItemsToAddChancePercent: Record<string, number>;
}
export interface Modifiers {
export interface IModifiers {
equipment: Record<string, number>;
mod: Record<string, number>;
}

View File

@ -9,11 +9,11 @@ export interface IPmcConfig extends IBaseConfig {
/** What account type should the PMC have */
accountTypeWeight: Record<MemberCategory, number>;
/** Global whitelist/blacklist of vest loot for PMCs */
vestLoot: SlotLootSettings;
vestLoot: ISlotLootSettings;
/** Global whitelist/blacklist of pocket loot for PMCs */
pocketLoot: SlotLootSettings;
pocketLoot: ISlotLootSettings;
/** Global whitelist/blacklist of backpack loot for PMCs */
backpackLoot: SlotLootSettings;
backpackLoot: ISlotLootSettings;
/** Use difficulty defined in config/bot.json/difficulty instead of chosen difficulty dropdown value */
useDifficultyOverride: boolean;
/** Difficulty override e.g. "AsOnline/Hard" */
@ -32,7 +32,7 @@ export interface IPmcConfig extends IBaseConfig {
bearType: string;
/** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */
pmcType: Record<string, Record<string, Record<string, number>>>;
maxBackpackLootTotalRub: MinMaxLootValue[];
maxBackpackLootTotalRub: IMinMaxLootValue[];
maxPocketLootTotalRub: number;
maxVestLootTotalRub: number;
/** 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 */
@ -61,14 +61,14 @@ export interface IHostilitySettings {
additionalFriendlyTypes?: string[];
savagePlayerBehaviour?: string;
}
export interface PmcTypes {
export interface IPmcTypes {
usec: string;
bear: string;
}
export interface SlotLootSettings {
export interface ISlotLootSettings {
whitelist: string[];
blacklist: string[];
}
export interface MinMaxLootValue extends MinMax {
export interface IMinMaxLootValue extends MinMax {
value: number;
}

View File

@ -7,13 +7,13 @@ export interface IRagfairConfig extends IBaseConfig {
/** Default values used to hydrate `runIntervalSeconds` with */
runIntervalValues: IRunIntervalValues;
/** Player listing settings */
sell: Sell;
sell: ISell;
/** Trader ids + should their assorts be listed on flea */
traders: Record<string, boolean>;
dynamic: Dynamic;
dynamic: IDynamic;
tieredFlea: ITieredFlea;
}
export interface Sell {
export interface ISell {
/** Should a fee be deducted from player when liting an item for sale */
fees: boolean;
/** Settings to control chances of offer being sold */
@ -33,7 +33,7 @@ export interface Chance {
/** Min possible sell chance % for a player listed offer */
minSellChancePercent: number;
}
export interface Dynamic {
export interface IDynamic {
purchasesAreFoundInRaid: boolean;
/** Use the highest trader price for an offer if its greater than the price in templates/prices.json */
useTraderPriceForOffersIfHigher: boolean;
@ -41,7 +41,7 @@ export interface Dynamic {
barter: IBarterDetails;
pack: IPackDetails;
/** Dynamic offer price below handbook adjustment values */
offerAdjustment: OfferAdjustment;
offerAdjustment: IOfferAdjustment;
/** How many offers should expire before an offer regeneration occurs */
expiredOfferThreshold: number;
/** How many offers should be listed */
@ -70,7 +70,7 @@ export interface Dynamic {
/** Should christmas/halloween items be removed from flea when not within the seasonal bounds */
removeSeasonalItemsWhenNotInEvent: boolean;
/** Flea blacklist settings */
blacklist: Blacklist;
blacklist: IRagfairBlacklist;
/** Dict of price limits keyed by item type */
unreasonableModPrices: Record<string, IUnreasonableModPrices>;
}
@ -103,7 +103,7 @@ export interface IPackDetails {
/** item types to allow being a pack */
itemTypeWhitelist: string[];
}
export interface OfferAdjustment {
export interface IOfferAdjustment {
/** Shuld offer price be adjusted when below handbook price */
adjustPriceWhenBelowHandbookPrice: boolean;
/** How big a percentage difference does price need to vary from handbook to be considered for adjustment */
@ -119,7 +119,7 @@ export interface Condition {
current: MinMax;
max: MinMax;
}
export interface Blacklist {
export interface IRagfairBlacklist {
/** Damaged ammo packs */
damagedAmmoPacks: boolean;
/** Custom blacklist for item Tpls */
@ -159,7 +159,10 @@ export interface IArmorSettings {
}
export interface ITieredFlea {
enabled: boolean;
unlocks: Record<string, number>;
/** key: tpl, value: playerlevel */
unlocksTpl: Record<string, number>;
/** key: item type id, value: playerlevel */
unlocksType: Record<string, number>;
ammoTiersEnabled: boolean;
ammoTplUnlocks: Record<string, number>;
}

View File

@ -10,7 +10,7 @@ export interface IRepairConfig extends IBaseConfig {
repairKitIntellectGainMultiplier: IIntellectGainValues;
maxIntellectGainPerRepair: IMaxIntellectGainValues;
weaponTreatment: IWeaponTreatmentRepairValues;
repairKit: RepairKit;
repairKit: IRepairKit;
}
export interface IIntellectGainValues {
weapon: number;
@ -30,17 +30,17 @@ export interface IWeaponTreatmentRepairValues {
/** The multiplier used for calculating weapon maintenance XP */
pointGainMultiplier: number;
}
export interface RepairKit {
armor: BonusSettings;
weapon: BonusSettings;
export interface IRepairKit {
armor: IBonusSettings;
weapon: IBonusSettings;
}
export interface BonusSettings {
export interface IBonusSettings {
rarityWeight: Record<string, number>;
bonusTypeWeight: Record<string, number>;
common: Record<string, BonusValues>;
rare: Record<string, BonusValues>;
common: Record<string, IBonusValues>;
rare: Record<string, IBonusValues>;
}
export interface BonusValues {
export interface IBonusValues {
valuesMinMax: MinMax;
/** What dura is buff active between (min max of current max) */
activeDurabilityPercentMinMax: MinMax;

View File

@ -1,24 +1,24 @@
import { MinMax } from "@spt/models/common/MinMax";
import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig";
import { LootRequest } from "@spt/models/spt/services/LootRequest";
import { ILootRequest } from "@spt/models/spt/services/ILootRequest";
export interface ITraderConfig extends IBaseConfig {
kind: "spt-trader";
updateTime: UpdateTime[];
updateTime: IUpdateTime[];
purchasesAreFoundInRaid: boolean;
/** Should trader reset times be set based on server start time (false = bsg time - on the hour) */
tradersResetFromServerStart: boolean;
updateTimeDefault: number;
traderPriceMultipler: number;
fence: FenceConfig;
moddedTraders: ModdedTraders;
fence: IFenceConfig;
moddedTraders: IModdedTraders;
}
export interface UpdateTime {
export interface IUpdateTime {
traderId: string;
/** Seconds between trader resets */
seconds: MinMax;
}
export interface FenceConfig {
discountOptions: DiscountOptions;
export interface IFenceConfig {
discountOptions: IDiscountOptions;
partialRefreshTimeSeconds: number;
partialRefreshChangePercent: number;
assortSize: number;
@ -45,19 +45,19 @@ export interface FenceConfig {
/** Max pen value allowed to be listed on flea - affects ammo + ammo boxes */
ammoMaxPenLimit: number;
blacklist: string[];
coopExtractGift: CoopExtractReward;
coopExtractGift: ICoopExtractReward;
btrDeliveryExpireHours: number;
}
export interface IItemDurabilityCurrentMax {
current: MinMax;
max: MinMax;
}
export interface CoopExtractReward extends LootRequest {
export interface ICoopExtractReward extends ILootRequest {
sendGift: boolean;
messageLocaleIds: string[];
giftExpiryHours: number;
}
export interface DiscountOptions {
export interface IDiscountOptions {
assortSize: number;
itemPriceMult: number;
presetPriceMult: number;
@ -65,7 +65,7 @@ export interface DiscountOptions {
equipmentPresetMinMax: MinMax;
}
/** Custom trader data needed client side for things such as the clothing service */
export interface ModdedTraders {
export interface IModdedTraders {
/** Trader Ids to enable the clothing service for */
clothingService: string[];
}

View File

@ -5,7 +5,7 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig";
export interface IWeatherConfig extends IBaseConfig {
kind: "spt-weather";
acceleration: number;
weather: Weather;
weather: IWeatherValues;
seasonDates: ISeasonDateTimes[];
overrideSeason?: Season;
}
@ -17,7 +17,9 @@ export interface ISeasonDateTimes {
endDay: number;
endMonth: number;
}
export interface Weather {
export interface IWeatherValues {
/** How many hours to generate weather data into the future */
generateWeatherAmountHours: number;
clouds: WeatherSettings<string>;
windSpeed: WeatherSettings<number>;
windDirection: WeatherSettings<WindDirection>;
@ -25,8 +27,14 @@ export interface Weather {
rain: WeatherSettings<number>;
rainIntensity: MinMax;
fog: WeatherSettings<string>;
temp: MinMax;
temp: Record<Season, ITempDayNight>;
pressure: MinMax;
/** Length of each weather period */
timePeriod: WeatherSettings<number>;
}
export interface ITempDayNight {
day: MinMax;
night: MinMax;
}
export interface WeatherSettings<T> {
values: T[];

View File

@ -1,5 +1,5 @@
import { IItem } from "@spt/models/eft/common/tables/IItem";
import { ISystemData, IUserDialogInfo, MessageContentRagfair } from "@spt/models/eft/profile/ISptProfile";
import { IMessageContentRagfair, ISystemData, IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { MessageType } from "@spt/models/enums/MessageType";
import { Traders } from "@spt/models/enums/Traders";
export interface ISendMessageDetails {
@ -24,7 +24,7 @@ export interface ISendMessageDetails {
/** Optional - ragfair related */
systemData?: ISystemData;
/** Optional - Used by ragfair messages */
ragfairDetails?: MessageContentRagfair;
ragfairDetails?: IMessageContentRagfair;
/** OPTIONAL - allows modification of profile settings via mail */
profileChangeEvents?: IProfileChangeEvent[];
}

View File

@ -1,9 +1,9 @@
export interface ScavCaseRewardCountsAndPrices {
Common: RewardCountAndPriceDetails;
Rare: RewardCountAndPriceDetails;
Superrare: RewardCountAndPriceDetails;
export interface IScavCaseRewardCountsAndPrices {
Common: IRewardCountAndPriceDetails;
Rare: IRewardCountAndPriceDetails;
Superrare: IRewardCountAndPriceDetails;
}
export interface RewardCountAndPriceDetails {
export interface IRewardCountAndPriceDetails {
minCount: number;
maxCount: number;
minPriceRub: number;

Some files were not shown because too many files have changed in this diff Show More