using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("OrtonUtils")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OrtonUtils")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("669fd67c-a4a4-4f30-adb4-58bcffccda10")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace OrtonUtils;
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "OrtonUtils";
public const string PLUGIN_NAME = "OrtonUtils";
public const string PLUGIN_VERSION = "1.0.0";
}
[BepInPlugin("OrtonUtils", "OrtonUtils", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
private void Awake()
{
((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin OrtonUtils is loaded!");
}
}
public class SkinnedEnemyHealth : MonoBehaviour
{
public Transform meshParent;
private List<Renderer> renderers;
private List<Material> sharedMaterials = new List<Material>();
internal List<Material> instancedMaterials = new List<Material>();
private bool hurtEffect;
private AnimationCurve hurtCurve;
private float hurtLerp;
private int materialHurtColor;
private int materialHurtAmount;
private void Awake()
{
//IL_016f: Unknown result type (might be due to invalid IL or missing references)
hurtCurve = AssetManager.instance.animationCurveImpact;
renderers = new List<Renderer>();
if (Object.op_Implicit((Object)(object)meshParent))
{
renderers.AddRange(((Component)meshParent).GetComponentsInChildren<Renderer>(true));
}
foreach (Renderer renderer in renderers)
{
Material val = null;
foreach (Material sharedMaterial in sharedMaterials)
{
if (((Object)renderer.sharedMaterial).name == ((Object)sharedMaterial).name)
{
val = sharedMaterial;
renderer.sharedMaterial = instancedMaterials[sharedMaterials.IndexOf(sharedMaterial)];
}
}
if (!Object.op_Implicit((Object)(object)val))
{
val = renderer.sharedMaterial;
sharedMaterials.Add(val);
instancedMaterials.Add(renderer.material);
}
}
materialHurtColor = Shader.PropertyToID("_ColorOverlay");
materialHurtAmount = Shader.PropertyToID("_ColorOverlayAmount");
foreach (Material instancedMaterial in instancedMaterials)
{
instancedMaterial.SetColor(materialHurtColor, Color.red);
}
}
public void OnSpawn()
{
string text = "Add for EnemyStateSpawn UnityEvent: OnSpawn";
if (!hurtEffect)
{
return;
}
hurtLerp = 1f;
hurtEffect = false;
foreach (Material instancedMaterial in instancedMaterials)
{
instancedMaterial.SetFloat(materialHurtAmount, 0f);
}
}
public void OnHurt()
{
string text = "Add for EnemyHealth UnityEvents: OnHurt and DeathStart";
hurtEffect = true;
hurtLerp = 0f;
}
private void Update()
{
if (!hurtEffect)
{
return;
}
hurtLerp += 2.5f * Time.deltaTime;
hurtLerp = Mathf.Clamp01(hurtLerp);
foreach (Material instancedMaterial in instancedMaterials)
{
instancedMaterial.SetFloat(materialHurtAmount, hurtCurve.Evaluate(hurtLerp));
}
if (!(hurtLerp > 1f))
{
return;
}
hurtEffect = false;
foreach (Material instancedMaterial2 in instancedMaterials)
{
instancedMaterial2.SetFloat(materialHurtAmount, 0f);
}
}
}