using Aki.Reflection.Patching;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace Aki.SinglePlayer.Patches.Healing
{
///
/// HealthController used by post-raid heal screen and health listenen class are different, this patch
/// ensures effects (fracture/bleeding) on body parts stay in sync
///
public class HealthControllerPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
return typeof(HealthControllerClass).GetMethod("ApplyTreatment", BindingFlags.Public | BindingFlags.Instance);
}
[PatchPrefix]
private static void PatchPrefix(object healthObserver)
{
var property = healthObserver.GetType().GetProperty("Effects");
if (property != null)
{
var effects = property.GetValue(healthObserver);
if (effects != null && effects.GetType().GetGenericTypeDefinition() == typeof(List<>))
{
var parsedEffects = ((IList)effects).Cast