Talk to five characters

This commit is contained in:
Noah Pilarski 2022-11-26 15:25:38 -05:00
parent 16131fa6f4
commit 813cca1b33
3 changed files with 31 additions and 0 deletions

View File

@ -83,12 +83,14 @@ namespace NewHorizons.External
KnownSignals = new List<string>();
NewlyRevealedFactIDs = new List<string>();
PopupsRead = new List<string>();
CharactersTalkedTo = new List<string>();
}
public List<string> KnownFrequencies { get; }
public List<string> KnownSignals { get; }
public List<string> NewlyRevealedFactIDs { get; }
public List<string> PopupsRead { get; }
public List<string> 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
}
}

View File

@ -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()

View File

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