using SPT.Reflection.Patching;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using HarmonyLib;
namespace SPT.SinglePlayer.Patches.Healing
{
///
/// HealthController used by post-raid heal screen and health listener class are different, this patch
/// ensures effects (fracture/bleeding) on body parts stay in sync
///
public class HealthControllerPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
return AccessTools.Method(typeof(HealthControllerClass), nameof(HealthControllerClass.ApplyTreatment));
}
[PatchPrefix]
private static void PatchPrefix(object healthObserver)
{
// Accesstools will throw warnings if player doesnt have any Effects while using Treatment at end of raid
var property = AccessTools.Property(healthObserver.GetType(), "Effects");
if (property != null)
{
var effects = property.GetValue(healthObserver);
if (effects != null && effects.GetType().GetGenericTypeDefinition() == typeof(List<>))
{
var parsedEffects = ((IList)effects).Cast