using Aki.Reflection.Patching; using Aki.Reflection.Utils; using HarmonyLib; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Newtonsoft.Json; using System.IO; namespace VoiceAdd { public class VoicePatch : ModulePatch { private static Type _targetType; public VoicePatch() { _targetType = PatchConstants.EftTypes.Single(IsTargetType); } private bool IsTargetType(Type type) { return type.GetMethod("TakePhrasePath") != null; } protected override MethodBase GetTargetMethod() { return _targetType.GetMethod("TakePhrasePath"); } [PatchPrefix] private static void PatchPrefix() { string json = new StreamReader("./user/mods/StalkerVoices/voices.json").ReadToEnd(); Dictionary voices = JsonConvert.DeserializeObject>(json); Dictionary value = Traverse.Create(_targetType).Field>("dictionary_0").Value; foreach (var voicename in voices.Keys) { voices.TryGetValue(voicename, out var voicebundle); if (!value.ContainsKey(voicename)) value.Add(voicename, voicebundle); } } } }