using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BodyModelAdditionsAPI;
using HG.Reflection;
using Microsoft.CodeAnalysis;
using RiskOfOptions;
using RiskOfOptions.Options;
using RoR2;
using RoR2.CharacterAI;
using UnityEngine;
using UnityEngine.AddressableAssets;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("FreakyEyes")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("FreakyEyes")]
[assembly: AssemblyTitle("FreakyEyes")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace FreakyEyes
{
[Serializable]
[BepInPlugin("com.brynzananas.freakyeyes", "Freaky Eyes", "1.3.1")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Main : BaseUnityPlugin
{
public class TrackingEye : MonoBehaviour
{
public Transform eyeBone;
public Transform eyeTarget;
public BaseAI baseAI;
public PlayerCharacterMasterController characterMasterController;
public bool freakier = false;
public void Start()
{
if ((Object)(object)baseAI == (Object)null)
{
Object.Destroy((Object)(object)this);
return;
}
eyeBone = ((Component)this).transform;
if ((Object)(object)eyeBone == (Object)null)
{
Object.Destroy((Object)(object)this);
}
else
{
freakier = Util.CheckRoll(5f, 0f, (CharacterMaster)null);
}
}
public void FixedUpdate()
{
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)baseAI) && baseAI.enemySearch != null && baseAI.enemySearch.candidatesEnumerable != null && baseAI.enemySearch.candidatesEnumerable.Count > 0)
{
HurtBox hurtBox = baseAI.enemySearch.candidatesEnumerable.FirstOrDefault().hurtBox;
if ((Object)(object)hurtBox != (Object)null)
{
eyeTarget = ((Component)hurtBox).transform;
}
if (freakier && Object.op_Implicit((Object)(object)hurtBox) && Object.op_Implicit((Object)(object)hurtBox.healthComponent.body) && Object.op_Implicit((Object)(object)hurtBox.healthComponent.body.master) && Object.op_Implicit((Object)(object)hurtBox.healthComponent.body.master.playerCharacterMasterController))
{
characterMasterController = hurtBox.healthComponent.body.master.playerCharacterMasterController;
eyeTarget = ((Component)characterMasterController.networkUser.cameraRigController.sceneCam).transform;
}
}
}
public void LateUpdate()
{
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)eyeTarget) && Object.op_Implicit((Object)(object)eyeBone))
{
Transform obj = eyeBone;
Vector3 val = ((Component)eyeTarget).transform.position - eyeBone.position;
obj.rotation = Quaternion.LookRotation(((Vector3)(ref val)).normalized);
}
}
}
public const string ModGuid = "com.brynzananas.freakyeyes";
public const string ModName = "Freaky Eyes";
public const string ModVer = "1.3.1";
private static bool riskOfOptionsEnabled;
public static AssetBundle assetBundle;
public static GameObject freakyEye;
public static PluginInfo PInfo { get; private set; }
public void Awake()
{
//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_0143: Unknown result type (might be due to invalid IL or missing references)
//IL_014a: Expected O, but got Unknown
//IL_0177: Unknown result type (might be due to invalid IL or missing references)
//IL_0181: Expected O, but got Unknown
//IL_018a: Unknown result type (might be due to invalid IL or missing references)
//IL_0194: Expected O, but got Unknown
//IL_0199: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01a7: Expected O, but got Unknown
//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
//IL_01de: Expected O, but got Unknown
//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
//IL_01f1: Expected O, but got Unknown
//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
//IL_020d: Unknown result type (might be due to invalid IL or missing references)
//IL_0214: Expected O, but got Unknown
//IL_0241: Unknown result type (might be due to invalid IL or missing references)
//IL_024b: Expected O, but got Unknown
//IL_0254: Unknown result type (might be due to invalid IL or missing references)
//IL_025e: Expected O, but got Unknown
//IL_0263: Unknown result type (might be due to invalid IL or missing references)
//IL_026a: Unknown result type (might be due to invalid IL or missing references)
//IL_0271: Expected O, but got Unknown
//IL_029e: Unknown result type (might be due to invalid IL or missing references)
//IL_02a8: Expected O, but got Unknown
//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
//IL_02bb: Expected O, but got Unknown
//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
//IL_02d7: Unknown result type (might be due to invalid IL or missing references)
//IL_02de: Expected O, but got Unknown
//IL_030b: Unknown result type (might be due to invalid IL or missing references)
//IL_0315: Expected O, but got Unknown
//IL_031e: Unknown result type (might be due to invalid IL or missing references)
//IL_0328: Expected O, but got Unknown
//IL_032d: Unknown result type (might be due to invalid IL or missing references)
//IL_0334: Unknown result type (might be due to invalid IL or missing references)
//IL_033b: Expected O, but got Unknown
//IL_0368: Unknown result type (might be due to invalid IL or missing references)
//IL_0372: Expected O, but got Unknown
//IL_037b: Unknown result type (might be due to invalid IL or missing references)
//IL_0385: Expected O, but got Unknown
//IL_0389: Unknown result type (might be due to invalid IL or missing references)
//IL_03a1: Unknown result type (might be due to invalid IL or missing references)
//IL_03a8: Expected O, but got Unknown
//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
//IL_03df: Expected O, but got Unknown
//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
//IL_03f2: Expected O, but got Unknown
//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0405: Expected O, but got Unknown
//IL_0432: Unknown result type (might be due to invalid IL or missing references)
//IL_043c: Expected O, but got Unknown
//IL_0445: Unknown result type (might be due to invalid IL or missing references)
//IL_044f: Expected O, but got Unknown
//IL_0453: Unknown result type (might be due to invalid IL or missing references)
PInfo = ((BaseUnityPlugin)this).Info;
assetBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(PInfo.Location), "assetbundles", "freakyeye"));
riskOfOptionsEnabled = Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions");
List<Material> list = new List<Material>();
list.AddRange(assetBundle.LoadAllAssets<Material>());
foreach (Material item in list)
{
if (((Object)item.shader).name.StartsWith("StubbedRoR2"))
{
string text = ((Object)item.shader).name.Replace("StubbedRoR2", "RoR2") + ".shader";
Shader val = Addressables.LoadAssetAsync<Shader>((object)text).WaitForCompletion();
if (Object.op_Implicit((Object)(object)val))
{
item.shader = val;
}
}
}
freakyEye = assetBundle.LoadAsset<GameObject>("Assets/CosmeticsMod/googlyeye.prefab");
freakyEye.AddComponent<TrackingEye>();
ConfigEntry<bool> config1 = CreateConfig("Blind Pest");
ModelPartInfo val2 = new ModelPartInfo();
val2.bodyName = "FlyingVerminBody";
val2.gameObject = freakyEye;
val2.inputString = "Body";
val2.codeAfterApplying = new CodeAfterApplying(PlaceIt);
val2.customCondition = new CustomCondition(Config1);
ModelPartInfo val3 = val2;
new ModelPart(val3);
val2 = new ModelPartInfo();
val2.bodyName = "FlyingVerminBody";
val2.gameObject = freakyEye;
val2.inputString = "Body";
val2.codeAfterApplying = new CodeAfterApplying(PlaceIt2);
val2.customCondition = new CustomCondition(Config1);
val3 = val2;
new ModelPart(val3);
ConfigEntry<bool> config2 = CreateConfig("Blind Vermin");
val2 = new ModelPartInfo();
val2.bodyName = "VerminBody";
val2.gameObject = freakyEye;
val2.inputString = "Head";
val2.codeAfterApplying = new CodeAfterApplying(PlaceIt3);
val2.customCondition = new CustomCondition(Config2);
val3 = val2;
new ModelPart(val3);
val2 = new ModelPartInfo();
val2.bodyName = "VerminBody";
val2.gameObject = freakyEye;
val2.inputString = "Head";
val2.codeAfterApplying = new CodeAfterApplying(PlaceIt4);
val2.customCondition = new CustomCondition(Config2);
val3 = val2;
new ModelPart(val3);
ConfigEntry<bool> config3 = CreateConfig("Lemurian");
val2 = new ModelPartInfo();
val2.bodyName = "LemurianBody";
val2.gameObject = freakyEye;
val2.inputString = "Head";
val2.codeAfterApplying = new CodeAfterApplying(PlaceIt5);
val2.customCondition = new CustomCondition(Config3);
val3 = val2;
new ModelPart(val3);
val2 = new ModelPartInfo();
val2.bodyName = "LemurianBody";
val2.gameObject = freakyEye;
val2.inputString = "Head";
val2.codeAfterApplying = new CodeAfterApplying(PlaceIt6);
val2.customCondition = new CustomCondition(Config3);
val3 = val2;
new ModelPart(val3);
ConfigEntry<bool> config4 = CreateConfig("Elder Lemurian");
val2 = new ModelPartInfo();
val2.bodyName = "LemurianBruiserBody";
val2.gameObject = freakyEye;
val2.inputString = "Head";
val2.codeAfterApplying = new CodeAfterApplying(PlaceIt7);
val2.customCondition = new CustomCondition(Config4);
val3 = val2;
new ModelPart(val3);
val2 = new ModelPartInfo();
val2.bodyName = "LemurianBruiserBody";
val2.gameObject = freakyEye;
val2.inputString = "Head";
val2.codeAfterApplying = new CodeAfterApplying(PlaceIt8);
val2.customCondition = new CustomCondition(Config4);
val3 = val2;
new ModelPart(val3);
static void ApplyFreakyTracking(GameObject gameObject, CharacterModel characterModel)
{
if (Object.op_Implicit((Object)(object)characterModel) && Object.op_Implicit((Object)(object)characterModel.body) && Object.op_Implicit((Object)(object)characterModel.body.master))
{
BaseAI component = ((Component)characterModel.body.master).GetComponent<BaseAI>();
if ((Object)(object)component != (Object)null)
{
TrackingEye component2 = gameObject.GetComponent<TrackingEye>();
component2.baseAI = component;
}
}
}
bool Config1(CharacterModel characterModel)
{
return config1.Value;
}
bool Config2(CharacterModel characterModel)
{
return config2.Value;
}
bool Config3(CharacterModel characterModel)
{
return config3.Value;
}
bool Config4(CharacterModel characterModel)
{
return config4.Value;
}
ConfigEntry<bool> CreateConfig(string bodyName)
{
ConfigEntry<bool> val4 = ((BaseUnityPlugin)this).Config.Bind<bool>("Main", bodyName, true, "Enable freaky eyes for " + bodyName + "?");
if (riskOfOptionsEnabled)
{
val4.AddBoolConfig();
}
return val4;
}
static void PlaceIt(GameObject modelObject, ChildLocator childLocator, CharacterModel characterModel, ActivePartsComponent activePartsComponent)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
ApplyFreakyTracking(modelObject, characterModel);
modelObject.transform.localPosition = new Vector3(-0.45f, 0.641f, 0.89f);
modelObject.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f);
}
static void PlaceIt2(GameObject modelObject, ChildLocator childLocator, CharacterModel characterModel, ActivePartsComponent activePartsComponent)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
ApplyFreakyTracking(modelObject, characterModel);
modelObject.transform.localPosition = new Vector3(0.45f, 0.641f, 0.89f);
modelObject.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f);
}
static void PlaceIt3(GameObject modelObject, ChildLocator childLocator, CharacterModel characterModel, ActivePartsComponent activePartsComponent)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
ApplyFreakyTracking(modelObject, characterModel);
modelObject.transform.localPosition = new Vector3(-0.312f, 0.999f, -0.308f);
modelObject.transform.localEulerAngles = new Vector3(-127.928f, 0f, 0f);
modelObject.transform.localScale = new Vector3(0.2f, 0.2f, 0.2f);
}
static void PlaceIt4(GameObject modelObject, ChildLocator childLocator, CharacterModel characterModel, ActivePartsComponent activePartsComponent)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
ApplyFreakyTracking(modelObject, characterModel);
modelObject.transform.localPosition = new Vector3(0.312f, 0.999f, -0.308f);
modelObject.transform.localEulerAngles = new Vector3(-127.928f, 0f, 0f);
modelObject.transform.localScale = new Vector3(0.2f, 0.2f, 0.2f);
}
static void PlaceIt5(GameObject modelObject, ChildLocator childLocator, CharacterModel characterModel, ActivePartsComponent activePartsComponent)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
ApplyFreakyTracking(modelObject, characterModel);
modelObject.transform.localPosition = new Vector3(1.47f, 1.86f, -0.33f);
modelObject.transform.localEulerAngles = new Vector3(-70f, 90f, 0f);
modelObject.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);
}
static void PlaceIt6(GameObject modelObject, ChildLocator childLocator, CharacterModel characterModel, ActivePartsComponent activePartsComponent)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
ApplyFreakyTracking(modelObject, characterModel);
modelObject.transform.localPosition = new Vector3(-1.47f, 1.86f, -0.33f);
modelObject.transform.localEulerAngles = new Vector3(250f, 90f, 0f);
modelObject.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);
}
static void PlaceIt7(GameObject modelObject, ChildLocator childLocator, CharacterModel characterModel, ActivePartsComponent activePartsComponent)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
ApplyFreakyTracking(modelObject, characterModel);
modelObject.transform.localPosition = new Vector3(1.7f, 2f, -0.2f);
modelObject.transform.localEulerAngles = new Vector3(-75f, 90f, 0f);
modelObject.transform.localScale = new Vector3(0.7f, 0.7f, 0.7f);
}
static void PlaceIt8(GameObject modelObject, ChildLocator childLocator, CharacterModel characterModel, ActivePartsComponent activePartsComponent)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
ApplyFreakyTracking(modelObject, characterModel);
modelObject.transform.localPosition = new Vector3(-1.7f, 2f, -0.2f);
modelObject.transform.localEulerAngles = new Vector3(255f, 90f, 0f);
modelObject.transform.localScale = new Vector3(0.7f, 0.7f, 0.7f);
}
}
}
public static class RiskOfOptionsCompatimility
{
public const string riskOfOptionsGUID = "com.rune580.riskofoptions";
public static void AddFloatConfig(this ConfigEntry<float> configEntry)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Expected O, but got Unknown
ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(configEntry));
}
public static void AddIntConfig(this ConfigEntry<int> configEntry)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Expected O, but got Unknown
ModSettingsManager.AddOption((BaseOption)new IntFieldOption(configEntry));
}
public static void AddBoolConfig(this ConfigEntry<bool> configEntry)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Expected O, but got Unknown
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(configEntry));
}
}
}