diff --git a/NewHorizons/External/NewHorizonsData.cs b/NewHorizons/External/NewHorizonsData.cs index 2a2c8c5d..58904d4e 100644 --- a/NewHorizons/External/NewHorizonsData.cs +++ b/NewHorizons/External/NewHorizonsData.cs @@ -83,12 +83,14 @@ namespace NewHorizons.External KnownSignals = new List(); NewlyRevealedFactIDs = new List(); PopupsRead = new List(); + CharactersTalkedTo = new List(); } public List KnownFrequencies { get; } public List KnownSignals { get; } public List NewlyRevealedFactIDs { get; } public List PopupsRead { get; } + public List CharactersTalkedTo { get; } } #region Frequencies @@ -172,5 +174,22 @@ namespace NewHorizons.External } #endregion + + #region Characters talked to + + public static void OnTalkedToCharacter(string name) + { + if (name == CharacterDialogueTree.RECORDING_NAME || name == CharacterDialogueTree.SIGN_NAME) return; + _activeProfile?.PopupsRead.SafeAdd(name); + Save(); + } + + public static bool HasTalkedToFiveCharacters() + { + if (_activeProfile == null) return false; + return _activeProfile.CharactersTalkedTo.Count >= 5; + } + + #endregion } } \ No newline at end of file diff --git a/NewHorizons/OtherMods/AchievementsPlus/NH/TalkToFiveCharactersAchievement.cs b/NewHorizons/OtherMods/AchievementsPlus/NH/TalkToFiveCharactersAchievement.cs index 4a59cc24..dcc9809c 100644 --- a/NewHorizons/OtherMods/AchievementsPlus/NH/TalkToFiveCharactersAchievement.cs +++ b/NewHorizons/OtherMods/AchievementsPlus/NH/TalkToFiveCharactersAchievement.cs @@ -1,3 +1,4 @@ +using NewHorizons.External; using System; using System.Collections.Generic; using System.Linq; @@ -13,6 +14,13 @@ namespace NewHorizons.OtherMods.AchievementsPlus.NH public static void Init() { AchievementHandler.Register(UNIQUE_ID, false, Main.Instance); + if (NewHorizonsData.HasTalkedToFiveCharacters()) Earn(); + } + + public static void OnTalkedToCharacter(string name) + { + NewHorizonsData.OnTalkedToCharacter(name); + if (NewHorizonsData.HasTalkedToFiveCharacters()) Earn(); } public static void Earn() diff --git a/NewHorizons/Patches/AchievementPatches.cs b/NewHorizons/Patches/AchievementPatches.cs index 21d7a8d1..3b7ea097 100644 --- a/NewHorizons/Patches/AchievementPatches.cs +++ b/NewHorizons/Patches/AchievementPatches.cs @@ -38,5 +38,9 @@ namespace NewHorizons.Patches __instance.enabled = false; return false; } + + [HarmonyPostfix] + [HarmonyPatch(typeof(CharacterDialogueTree), nameof(CharacterDialogueTree.StartConversation))] + public static void CharacterDialogueTree_StartConversation(CharacterDialogueTree __instance) => TalkToFiveCharactersAchievement.OnTalkedToCharacter(__instance._characterName); } }