Updated to 3.9.1 (#33)

Co-authored-by: Dev <dev@dev.sp-tarkov.com>
Reviewed-on: #33
This commit is contained in:
chomp 2024-07-13 18:55:40 +00:00
parent 88ad186bf5
commit 66c23d6dff
235 changed files with 547 additions and 651 deletions

View File

@ -1,4 +1,4 @@
# Mod examples for v3.9.0 # Mod examples for v3.9.1
A collection of example mods that perform typical actions in SPT A collection of example mods that perform typical actions in SPT

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

View File

@ -74,7 +74,7 @@ export declare class ProfileCallbacks {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<string>; getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData<boolean>;
/** /**
* Handle client/game/profile/search * Handle client/game/profile/search
*/ */

View File

@ -122,5 +122,5 @@ export declare class ProfileController {
/** /**
* Handle client/profile/settings * Handle client/profile/settings
*/ */
setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): void; setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean;
} }

View File

@ -23,7 +23,6 @@ import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -42,12 +41,11 @@ export declare class QuestController {
protected questConditionHelper: QuestConditionHelper; protected questConditionHelper: QuestConditionHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localeService: LocaleService; protected localeService: LocaleService;
protected seasonalEventService: SeasonalEventService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Handle client/quest/list * Handle client/quest/list
* Get all quests visible to player * Get all quests visible to player
@ -63,12 +61,6 @@ export declare class QuestController {
* @returns true if quest can be seen/accepted by player of defined level * @returns true if quest can be seen/accepted by player of defined level
*/ */
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
/**
* Should a quest be shown to the player in trader quest screen
* @param questId Quest to check
* @returns true = show to player
*/
protected showEventQuestToPlayer(questId: string): boolean;
/** /**
* Handle QuestAccept event * Handle QuestAccept event
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it

View File

@ -1,4 +1,4 @@
import { IChatCommand, ICommandoCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
@ -7,13 +7,9 @@ import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger; protected logger: ILogger;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[] | ICommandoCommand[]; protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
/** registerChatCommand(chatCommand: IChatCommand): void;
* @deprecated As of v3.7.6. Use registerChatCommand.
*/
registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void;
registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void;
abstract getChatBot(): IUserDialogInfo; abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string; protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string; handleMessage(sessionId: string, request: ISendMessageRequest): string;

View File

@ -1,9 +1,5 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
/**
* @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0.
*/
export type ICommandoCommand = IChatCommand;
export interface IChatCommand { export interface IChatCommand {
getCommandPrefix(): string; getCommandPrefix(): string;
getCommandHelp(command: string): string; getCommandHelp(command: string): string;

View File

@ -22,6 +22,7 @@ import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -39,13 +40,14 @@ export declare class QuestHelper {
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper; protected paymentHelper: PaymentHelper;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected seasonalEventService: SeasonalEventService;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected presetHelper: PresetHelper; protected presetHelper: PresetHelper;
protected mailSendService: MailSendService; protected mailSendService: MailSendService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected cloner: ICloner; protected cloner: ICloner;
protected questConfig: IQuestConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner);
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
@ -128,6 +130,12 @@ export declare class QuestHelper {
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
/**
* Should a seasonal/event quest be shown to the player
* @param questId Quest to check
* @returns true = show to player
*/
showEventQuestToPlayer(questId: string): boolean;
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param playerSide Player side (usec/bear) * @param playerSide Player side (usec/bear)

View File

@ -462,6 +462,7 @@ export interface Slot {
} }
export interface SlotProps { export interface SlotProps {
filters: SlotFilter[]; filters: SlotFilter[];
MaxStackCount?: number;
} }
export interface SlotFilter { export interface SlotFilter {
Shift?: number; Shift?: number;
@ -479,7 +480,7 @@ export interface StackSlot {
_max_count: number; _max_count: number;
_props: StackSlotProps; _props: StackSlotProps;
_proto: string; _proto: string;
upd: any; upd?: any;
} }
export interface StackSlotProps { export interface StackSlotProps {
filters: SlotFilter[]; filters: SlotFilter[];

View File

@ -93,6 +93,7 @@ export interface IUserDialogDetails {
Side: string; Side: string;
Level: number; Level: number;
MemberCategory: MemberCategory; MemberCategory: MemberCategory;
SelectedMemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;

View File

@ -62,6 +62,8 @@ export interface IServerFeatures {
autoInstallModDependencies: boolean; autoInstallModDependencies: boolean;
compressProfile: boolean; compressProfile: boolean;
chatbotFeatures: IChatbotFeatures; chatbotFeatures: IChatbotFeatures;
/** Keyed to profile type e.g. "Standard" or "SPT Developer" */
createNewProfileTypesBlacklist: string[];
} }
export interface IChatbotFeatures { export interface IChatbotFeatures {
sptFriendEnabled: boolean; sptFriendEnabled: boolean;

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