import { BotHelper } from "../helpers/BotHelper"; import { ProfileHelper } from "../helpers/ProfileHelper"; import { IConfig } from "../models/eft/common/IGlobals"; import { Inventory } from "../models/eft/common/tables/IBotType"; import { SeasonalEventType } from "../models/enums/SeasonalEventType"; import { IHttpConfig } from "../models/spt/config/IHttpConfig"; import { IQuestConfig } from "../models/spt/config/IQuestConfig"; import { ISeasonalEvent, ISeasonalEventConfig } from "../models/spt/config/ISeasonalEventConfig"; import { ILogger } from "../models/spt/utils/ILogger"; import { ConfigServer } from "../servers/ConfigServer"; import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseImporter } from "../utils/DatabaseImporter"; import { GiftService } from "./GiftService"; import { LocalisationService } from "./LocalisationService"; export declare class SeasonalEventService { protected logger: ILogger; protected databaseServer: DatabaseServer; protected databaseImporter: DatabaseImporter; protected giftService: GiftService; protected localisationService: LocalisationService; protected botHelper: BotHelper; protected profileHelper: ProfileHelper; protected configServer: ConfigServer; protected seasonalEventConfig: ISeasonalEventConfig; protected questConfig: IQuestConfig; protected httpConfig: IHttpConfig; constructor(logger: ILogger, databaseServer: DatabaseServer, databaseImporter: DatabaseImporter, giftService: GiftService, localisationService: LocalisationService, botHelper: BotHelper, profileHelper: ProfileHelper, configServer: ConfigServer); protected get christmasEventItems(): string[]; protected get halloweenEventItems(): string[]; /** * Get an array of christmas items found in bots inventories as loot * @returns array */ getChristmasEventItems(): string[]; /** * Get an array of halloween items found in bots inventories as loot * @returns array */ getHalloweenEventItems(): string[]; itemIsChristmasRelated(itemTpl: string): boolean; itemIsHalloweenRelated(itemTpl: string): boolean; /** * Check if item id exists in christmas or halloween event arrays * @param itemTpl item tpl to check for * @returns */ itemIsSeasonalRelated(itemTpl: string): boolean; /** * Get an array of items that appear during a seasonal event * returns multiple seasonal event items if they are both active * @returns array of tpl strings */ getAllSeasonalEventItems(): string[]; /** * Get an array of seasonal items that should be blocked as season is not currently active * @returns Array of tpl strings */ getSeasonalEventItemsToBlock(): string[]; /** * Is a seasonal event currently active * @returns true if event is active */ seasonalEventEnabled(): boolean; /** * Is christmas event active (Globals eventtype array contains even name) * @returns true if active */ christmasEventEnabled(): boolean; /** * is halloween event active (Globals eventtype array contains even name) * @returns true if active */ halloweenEventEnabled(): boolean; /** * Is detection of seasonal events enabled (halloween / christmas) * @returns true if seasonal events should be checked for */ isAutomaticEventDetectionEnabled(): boolean; /** * Get a dictionary of gear changes to apply to bots for a specific event e.g. Christmas/Halloween * @param eventName Name of event to get gear changes for * @returns bots with equipment changes */ protected getEventBotGear(eventType: SeasonalEventType): Record>>; /** * Get the dates each seasonal event starts and ends at * @returns Record with event name + start/end date */ getEventDetails(): ISeasonalEvent[]; /** * Look up quest in configs/quest.json * @param questId Quest to look up * @param event event type (Christmas/Halloween/None) * @returns true if related */ isQuestRelatedToEvent(questId: string, event: SeasonalEventType): boolean; /** * Check if current date falls inside any of the seasons events pased in, if so, handle them * @param sessionId Players id */ checkForAndEnableSeasonalEvents(sessionId: string): void; /** * Iterate through bots inventory and loot to find and remove christmas items (as defined in SeasonalEventService) * @param nodeInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ removeChristmasItemsFromBotInventory(nodeInventory: Inventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id * @param globalConfig globals.json * @param eventName Name of the event to enable. e.g. Christmas */ protected updateGlobalEvents(sessionId: string, globalConfig: IConfig, eventType: SeasonalEventType): void; /** * Change trader icons to be more event themed (Halloween only so far) * @param eventType What event is active */ protected adjustTraderIcons(eventType: SeasonalEventType): void; /** * Add lootble items from backpack into patrol.ITEMS_TO_DROP difficulty property */ protected addLootItemsToGifterDropItemsList(): void; /** * Read in data from seasonalEvents.json and add found equipment items to bots * @param eventName Name of the event to read equipment in from config */ protected addEventGearToBots(eventType: SeasonalEventType): void; protected addPumpkinsToScavBackpacks(): void; /** * Set Khorovod(dancing tree) chance to 100% on all maps that support it */ protected enableDancingTree(): void; /** * Add santa to maps */ protected addGifterBotToMaps(): void; /** * Send gift to player if they'e not already received it * @param playerId Player to send gift to * @param giftkey Key of gift to give */ protected giveGift(playerId: string, giftkey: string): void; }