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();
}
}