using Core.Annotations; using Core.Models.Eft.Common; using Core.Models.Eft.Common.Tables; using Core.Models.Enums; using Core.Models.Spt.Config; namespace Core.Services; [Injectable(InjectionType.Singleton)] public class SeasonalEventService { /// /// Get an array of christmas items found in bots inventories as loot /// /// array public string[] GetChristmasEventItems() { throw new NotImplementedException(); } /// /// Get an array of halloween items found in bots inventories as loot /// /// array public string[] GetHalloweenEventItems() { throw new NotImplementedException(); } public bool ItemIsChristmasRelated(string itemTpl) { throw new NotImplementedException(); } public bool ItemIsHalloweenRelated(string itemTpl) { throw new NotImplementedException(); } /// /// Check if item id exists in christmas or halloween event arrays /// /// item tpl to check for /// public bool ItemIsSeasonalRelated(string itemTpl) { throw new NotImplementedException(); } /// /// Get active seasonal events /// /// Array of active events public List GetActiveEvents() { throw new NotImplementedException(); } /// /// Get an array of seasonal items that should not appear /// e.g. if halloween is active, only return christmas items /// or, if halloween and christmas are inactive, return both sets of items /// /// array of tpl strings public string[] GetInactiveSeasonalEventItems() { throw new NotImplementedException(); } /// /// Is a seasonal event currently active /// /// true if event is active public bool SeasonalEventEnabled() { throw new NotImplementedException(); } /// /// Is christmas event active /// /// true if active public bool ChristmasEventEnabled() { throw new NotImplementedException(); } /// /// is halloween event active /// /// true if active public bool HalloweenEventEnabled() { throw new NotImplementedException(); } /// /// Is detection of seasonal events enabled (halloween / christmas) /// /// true if seasonal events should be checked for public bool IsAutomaticEventDetectionEnabled() { throw new NotImplementedException(); } /// /// Get a dictionary of gear changes to apply to bots for a specific event e.g. Christmas/Halloween /// /// Name of event to get gear changes for /// bots with equipment changes protected Dictionary>> GetEventBotGear(SeasonalEventType eventType) { throw new NotImplementedException(); } /// /// Get a dictionary of loot changes to apply to bots for a specific event e.g. Christmas/Halloween /// /// Name of event to get gear changes for /// bots with loot changes protected Dictionary>> GetEventBotLoot(SeasonalEventType eventType) { throw new NotImplementedException(); } /// /// Get the dates each seasonal event starts and ends at /// /// Record with event name + start/end date public List GetEventDetails() { throw new NotImplementedException(); } /// /// Look up quest in configs/quest.json /// /// Quest to look up /// event type (Christmas/Halloween/None) /// true if related public bool IsQuestRelatedToEvent(string questId, SeasonalEventType eventType) { throw new NotImplementedException(); } /// /// Handle activating seasonal events /// public void EnableSeasonalEvents() { throw new NotImplementedException(); } /// /// Force a seasonal event to be active /// /// Event to force active /// True if event was successfully force enabled public bool ForceSeasonalEvent(SeasonalEventType eventType) { throw new NotImplementedException(); } /// /// Store active events inside class list property `currentlyActiveEvents` + set class properties: christmasEventActive/halloweenEventActive /// public void CacheActiveEvents() { throw new NotImplementedException(); } /// /// Get the currently active weather season e.g. SUMMER/AUTUMN/WINTER /// /// Season enum value public Season GetActiveWeatherSeason() { throw new NotImplementedException(); } /// /// Does the provided date fit between the two defined dates? /// Excludes year /// Inclusive of end date upto 23 hours 59 minutes /// /// Date to check is between 2 dates /// Lower bound for month /// Lower bound for day /// Upper bound for month /// Upper bound for day /// True when inside date range protected bool DateIsBetweenTwoDates(DateTime dateToCheck, int startMonth, int startDay, int endMonth, int endDay) { throw new NotImplementedException(); } /// /// Iterate through bots inventory and loot to find and remove christmas items (as defined in SeasonalEventService) /// /// Bots inventory to iterate over /// the role of the bot being processed public void RemoveChristmasItemsFromBotInventory(BotBaseInventory botInventory, string botRole) { throw new NotImplementedException(); } /// /// Make adjusted to server code based on the name of the event passed in /// /// globals.json /// Name of the event to enable. e.g. Christmas protected void UpdateGlobalEvents(Config globalConfig, SeasonalEvent eventType) { throw new NotImplementedException(); } protected void ApplyHalloweenEvent(SeasonalEvent eventType, Config globalConfig) { throw new NotImplementedException(); } protected void ApplyChristmasEvent(SeasonalEvent eventType, Config globalConfig) { throw new NotImplementedException(); } protected void ApplyNewYearsEvent(SeasonalEvent eventType, Config globalConfig) { throw new NotImplementedException(); } protected void AdjustBotAppearanceValues(SeasonalEventType season) { throw new NotImplementedException(); } protected void ReplaceBotHostility(Dictionary hostilitySettings) { throw new NotImplementedException(); } protected void RemoveEntryRequirement(List locationIds) { throw new NotImplementedException(); } public void GivePlayerSeasonalGifts(string sessionId) { throw new NotImplementedException(); } /// /// Force zryachiy to always have a melee weapon /// protected void AdjustZryachiyMeleeChance() { throw new NotImplementedException(); } /// /// Enable the halloween zryachiy summon event /// protected void EnableHalloweenSummonEvent() { throw new NotImplementedException(); } protected void ConfigureZombies(ZombieSettings zombieSettings) { throw new NotImplementedException(); } /// /// Get location ids of maps with an infection above 0 /// /// Dict of locations with their infection percentage /// List of location ids protected List GetLocationsWithZombies(Dictionary locationInfections) { throw new NotImplementedException(); } /// /// BSG store the location ids differently inside `LocationInfection`, need to convert to matching location IDs /// /// Key to convert /// List of locations protected List GetLocationFromInfectedLocation(string infectedLocationKey) { throw new NotImplementedException(); } protected void AddEventWavesToMaps(string eventType) { throw new NotImplementedException(); } /// /// Add event bosses to maps /// /// Seasonal event, e.g. HALLOWEEN/CHRISTMAS /// OPTIONAL - Maps to add bosses to protected void AddEventBossesToMaps(string eventType, List mapIdWhitelist = null) { throw new NotImplementedException(); } /// /// Change trader icons to be more event themed (Halloween only so far) /// /// What event is active protected void AdjustTraderIcons(SeasonalEventType eventType) { throw new NotImplementedException(); } /// /// Add lootble items from backpack into patrol.ITEMS_TO_DROP difficulty property /// protected void AddLootItemsToGifterDropItemsList() { throw new NotImplementedException(); } /// /// Read in data from seasonalEvents.json and add found equipment items to bots /// /// Name of the event to read equipment in from config protected void AddEventGearToBots(SeasonalEventType eventType) { throw new NotImplementedException(); } /// /// Read in data from seasonalEvents.json and add found loot items to bots /// /// Name of the event to read loot in from config protected void AddEventLootToBots(SeasonalEventType eventType) { throw new NotImplementedException(); } /// /// Add pumpkin loot boxes to scavs /// protected void AddPumpkinsToScavBackpacks() { throw new NotImplementedException(); } protected void RenameBitcoin() { throw new NotImplementedException(); } /// /// Set Khorovod(dancing tree) chance to 100% on all maps that support it /// protected void EnableDancingTree() { throw new NotImplementedException(); } /// /// Add santa to maps /// protected void AddGifterBotToMaps() { throw new NotImplementedException(); } protected void HandleModEvent(SeasonalEvent seasonalEvent, Config globalConfig) { throw new NotImplementedException(); } /// /// Send gift to player if they have not already received it /// /// Player to send gift to /// Key of gift to give protected void GiveGift(string playerId, string giftKey) { throw new NotImplementedException(); } /// /// Get the underlying bot type for an event bot e.g. `peacefullZryachiyEvent` will return `bossZryachiy` /// /// Event bot role type /// Bot role as string public string GetBaseRoleForEventBot(string eventBotRole) { throw new NotImplementedException(); } /// /// Force the weather to be snow /// public void EnableSnow() { throw new NotImplementedException(); } }