using Core.Annotations; using Core.Models.Eft.Common; using Core.Models.Eft.Common.Tables; using Core.Models.Eft.Hideout; using Core.Models.Eft.Profile; using Core.Models.Enums; namespace Core.Services; [Injectable(InjectionType.Singleton)] public class ProfileFixerService { /// /// Find issues in the pmc profile data that may cause issues and fix them /// /// profile to check and fix public void CheckForAndFixPmcProfileIssues(PmcData pmcProfile) { throw new NotImplementedException(); } /// /// Resolve any dialogue attachments that were accidentally created using the player's equipment ID as /// the stash root object ID /// /// public void CheckForAndFixDialogueAttachments(SptProfile fullProfile) { throw new NotImplementedException(); } /// /// Find issues in the scav profile data that may cause issues /// /// profile to check and fix public void CheckForAndFixScavProfileIssues(PmcData scavProfile) { throw new NotImplementedException(); } /// /// Attempt to fix common item issues that corrupt profiles /// /// Profile to check items of public void FixProfileBreakingInventoryItemIssues(PmcData pmcProfile) { throw new NotImplementedException(); } /// /// TODO - make this non-public - currently used by RepeatableQuestController /// Remove unused condition counters /// /// profile to remove old counters from public void RemoveDanglingConditionCounters(PmcData pmcProfile) { throw new NotImplementedException(); } /// /// Repeatable quests leave behind TaskConditionCounter objects that make the profile bloat with time, remove them /// /// Player profile to check protected void RemoveDanglingTaskConditionCounters(PmcData pmcProfile) { throw new NotImplementedException(); } protected List GetActiveRepeatableQuests(List repeatableQuests) { throw new NotImplementedException(); } /// /// After removing mods that add quests, the quest panel will break without removing these /// /// Profile to remove dead quests from protected void RemoveOrphanedQuests(PmcData pmcProfile) { throw new NotImplementedException(); } /// /// Verify that all quest production unlocks have been applied to the PMC Profile /// /// The profile to validate quest productions for protected void VerifyQuestProductionUnlocks(PmcData pmcProfile) { throw new NotImplementedException(); } /// /// Validate that the given profile has the given quest reward production scheme unlocked, and add it if not /// /// Profile to check /// The quest reward to validate /// The quest the reward belongs to protected void VerifyQuestProductionUnlock(PmcData pmcProfile, QuestReward productionUnlockReward, Quest questDetails) { throw new NotImplementedException(); } /// /// Initial release of SPT 3.10 used an incorrect favorites structure, reformat /// the structure to the correct MongoID array structure /// /// protected void FixFavorites(PmcData pmcProfile) { throw new NotImplementedException(); } /// /// If the profile has elite Hideout Managment skill, add the additional slots from globals /// NOTE: This seems redundant, but we will leave it here just in case. /// /// profile to add slots to protected void AddHideoutEliteSlots(PmcData pmcProfile) { throw new NotImplementedException(); } /// /// add in objects equal to the number of slots /// /// area to check /// area to update /// profile to update protected void AddEmptyObjectsToHideoutAreaSlots(HideoutAreas areaType, int emptyItemCount, PmcData pmcProfile) { throw new NotImplementedException(); } protected IList AddObjectsToList(int count, List slots) { throw new NotImplementedException(); } /** * Check for and cap profile skills at 5100. * @param pmcProfile profile to check and fix */ protected void CheckForSkillsOverMaxLevel(PmcData pmcProfile) { throw new NotImplementedException(); } /** * Checks profile inventory for items that do not exist inside the items db * @param sessionId Session id * @param pmcProfile Profile to check inventory of */ public void CheckForOrphanedModdedItems(string sessionId, SptProfile fullProfile) { throw new NotImplementedException(); } /** * @param buildType The type of build, used for logging only * @param build The build to check for invalid items * @param itemsDb The items database to use for item lookup * @returns True if the build should be removed from the build list, false otherwise */ protected bool ShouldRemoveWeaponEquipmentBuild( string buildType, WeaponBuild equipmentBuild, Dictionary itemsDb) { throw new NotImplementedException(); } /** * @param magazineBuild The magazine build to check for validity * @param itemsDb The items database to use for item lookup * @returns True if the build should be removed from the build list, false otherwise */ protected bool ShouldRemoveMagazineBuild( MagazineBuild magazineBuild, Dictionary itemsDb) { throw new NotImplementedException(); } /** * REQUIRED for dev profiles * Iterate over players hideout areas and find what's built, look for missing bonuses those areas give and add them if missing * @param pmcProfile Profile to update */ public void AddMissingHideoutBonusesToProfile(PmcData pmcProfile) { throw new NotImplementedException(); } /** * @param profileBonuses bonuses from profile * @param bonus bonus to find * @returns matching bonus */ protected Bonus GetBonusFromProfile(List profileBonuses, StageBonus bonus) { throw new NotImplementedException(); } public void CheckForAndRemoveInvalidTraders(SptProfile fullProfile) { throw new NotImplementedException(); } }