Decompiled source of DBDCompany v1.0.0

DBDCompany_1.0.0.dll

Decompiled 2 months ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using HarmonyLib;
using Unity.Netcode;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("DBDCompany")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyDescription("My first plugin")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("DBDCompany")]
[assembly: AssemblyTitle("DBDCompany")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace DBDCompany
{
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "DBDCompany";

		public const string PLUGIN_NAME = "DBDCompany";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}
namespace DBDCompany.Patches
{
	[BepInPlugin("DBDCompany", "DBDCompany", "1.0.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		public static AssetBundle DBDCompany;

		private void Awake()
		{
			Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null);
		}
	}
}
namespace SquishPlugin
{
	[HarmonyPatch(typeof(EnemyAI), "Update")]
	internal class EnemyAIPatch
	{
		[MethodImpl(MethodImplOptions.NoInlining)]
		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		public static void Update(EnemyAI instance)
		{
			instance.Update();
		}
	}
	[HarmonyPatch(typeof(JesterAI))]
	internal class JesterAIPatcher
	{
		private static MethodInfo CalculateAnimationSpeed = AccessTools.Method(typeof(JesterAI), "CalculateAnimationSpeed", (Type[])null, (Type[])null);

		private static MethodInfo SetJesterInitialValues = AccessTools.Method(typeof(JesterAI), "SetJesterInitialValues", (Type[])null, (Type[])null);

		private static MethodInfo BaseUpdate = AccessTools.Method(typeof(EnemyAI), "Update", (Type[])null, (Type[])null);

		private static FieldInfo previousState = AccessTools.Field(typeof(JesterAI), "previousState");

		private static FieldInfo inKillAnimation = AccessTools.Field(typeof(JesterAI), "inKillAnimation");

		private static FieldInfo targetingPlayer = AccessTools.Field(typeof(JesterAI), "targetingPlayer");

		private static FieldInfo noPlayersToChaseTimer = AccessTools.Field(typeof(JesterAI), "noPlayersToChaseTimer");

		private static FieldInfo popUpTimer = AccessTools.Field(typeof(JesterAI), "popUpTimer");

		[HarmonyPatch("SetJesterInitialValues")]
		[HarmonyPostfix]
		public static void PatchedSetJesterInitialValues(JesterAI __instance)
		{
			popUpTimer.SetValue(__instance, 40f);
			__instance.farAudio.dopplerLevel = 0f;
		}

		[HarmonyPatch("Update")]
		[HarmonyPrefix]
		public static bool JesterAIUpdate(JesterAI __instance)
		{
			//IL_0363: Unknown result type (might be due to invalid IL or missing references)
			//IL_036e: Unknown result type (might be due to invalid IL or missing references)
			//IL_037e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0383: Unknown result type (might be due to invalid IL or missing references)
			//IL_0388: Unknown result type (might be due to invalid IL or missing references)
			//IL_038d: Unknown result type (might be due to invalid IL or missing references)
			//IL_039d: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_032c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0331: Unknown result type (might be due to invalid IL or missing references)
			//IL_0336: Unknown result type (might be due to invalid IL or missing references)
			//IL_033b: Unknown result type (might be due to invalid IL or missing references)
			//IL_034b: Unknown result type (might be due to invalid IL or missing references)
			if (((EnemyAI)__instance).isEnemyDead)
			{
				return false;
			}
			CalculateAnimationSpeed.Invoke(__instance, new object[1] { __instance.maxAnimSpeed });
			switch (((EnemyAI)__instance).currentBehaviourStateIndex)
			{
			case 0:
				if ((int)previousState.GetValue(__instance) != 0)
				{
					previousState.SetValue(__instance, 0);
					__instance.mainCollider.isTrigger = false;
					SetJesterInitialValues.Invoke(__instance, null);
				}
				if (!((NetworkBehaviour)__instance).IsOwner)
				{
					break;
				}
				if (((EnemyAI)__instance).stunNormalizedTimer > 0f)
				{
					__instance.beginCrankingTimer -= Time.deltaTime * 15f;
				}
				if ((Object)(object)((EnemyAI)__instance).targetPlayer != (Object)null)
				{
					__instance.beginCrankingTimer -= Time.deltaTime;
					if (__instance.beginCrankingTimer <= 0f)
					{
						((EnemyAI)__instance).SwitchToBehaviourState(1);
					}
				}
				break;
			case 1:
				if ((int)previousState.GetValue(__instance) != 1)
				{
					previousState.SetValue(__instance, 1);
					((EnemyAI)__instance).creatureAnimator.SetBool("turningCrank", true);
					__instance.farAudio.clip = __instance.popGoesTheWeaselTheme;
					__instance.farAudio.Play();
					((EnemyAI)__instance).agent.speed = 0f;
				}
				if (((EnemyAI)__instance).stunNormalizedTimer > 0f)
				{
					__instance.farAudio.Pause();
					((EnemyAI)__instance).creatureAnimator.SetFloat("CrankSpeedMultiplier", 0f);
				}
				else
				{
					if (!__instance.farAudio.isPlaying)
					{
						__instance.farAudio.UnPause();
					}
					((EnemyAI)__instance).creatureAnimator.SetFloat("CrankSpeedMultiplier", 1f);
					__instance.popUpTimer -= Time.deltaTime;
					if (__instance.popUpTimer <= 0f && ((NetworkBehaviour)__instance).IsOwner)
					{
						((EnemyAI)__instance).SwitchToBehaviourState(2);
					}
				}
				if (!((NetworkBehaviour)__instance).IsOwner)
				{
				}
				break;
			case 2:
				if ((int)previousState.GetValue(__instance) != 2)
				{
					previousState.SetValue(__instance, 2);
					__instance.farAudio.Stop();
					((EnemyAI)__instance).creatureAnimator.SetBool("poppedOut", true);
					((EnemyAI)__instance).creatureAnimator.SetFloat("CrankSpeedMultiplier", 1f);
					((EnemyAI)__instance).creatureSFX.PlayOneShot(__instance.popUpSFX);
					WalkieTalkie.TransmitOneShotAudio(((EnemyAI)__instance).creatureSFX, __instance.popUpSFX, 1f);
					((EnemyAI)__instance).creatureVoice.clip = __instance.screamingSFX;
					((EnemyAI)__instance).creatureVoice.Play();
					((EnemyAI)__instance).agent.speed = 0f;
					__instance.mainCollider.isTrigger = true;
					((EnemyAI)__instance).agent.stoppingDistance = 0f;
				}
				if (((NetworkBehaviour)__instance).IsOwner && (Object)(object)((EnemyAI)__instance).targetPlayer != (Object)null && ((EnemyAI)__instance).CheckLineOfSightForPosition(((Component)((EnemyAI)__instance).targetPlayer.gameplayCamera).transform.position, 80f, 80, -1f, (Transform)null))
				{
					__instance.headRigTarget.rotation = Quaternion.Lerp(__instance.headRigTarget.rotation, Quaternion.LookRotation(((Component)((EnemyAI)__instance).targetPlayer.gameplayCamera).transform.position - ((Component)__instance.headRigTarget).transform.position, Vector3.up), 5f * Time.deltaTime);
				}
				else
				{
					__instance.headRigTarget.rotation = Quaternion.Lerp(__instance.headRigTarget.rotation, Quaternion.LookRotation(__instance.lookForwardTarget.position - ((Component)__instance.headRigTarget).transform.position, Vector3.up), 5f * Time.deltaTime);
				}
				if (!((NetworkBehaviour)__instance).IsOwner)
				{
					break;
				}
				if ((bool)inKillAnimation.GetValue(__instance) || ((EnemyAI)__instance).stunNormalizedTimer > 0f)
				{
					((EnemyAI)__instance).agent.speed = 0f;
				}
				else
				{
					((EnemyAI)__instance).agent.speed = Mathf.Clamp(((EnemyAI)__instance).agent.speed + Time.deltaTime * 1.45f, 0f, 18f);
				}
				((EnemyAI)__instance).creatureAnimator.SetBool("stunned", ((EnemyAI)__instance).stunNormalizedTimer > 0f);
				if (!(bool)targetingPlayer.GetValue(__instance))
				{
					bool flag = false;
					for (int i = 0; i < StartOfRound.Instance.allPlayerScripts.Length; i++)
					{
						if (StartOfRound.Instance.allPlayerScripts[i].isPlayerControlled && StartOfRound.Instance.allPlayerScripts[i].isInsideFactory)
						{
							flag = true;
						}
					}
					if (!flag)
					{
						noPlayersToChaseTimer.SetValue(__instance, (float)noPlayersToChaseTimer.GetValue(__instance) - Time.deltaTime);
						if ((float)noPlayersToChaseTimer.GetValue(__instance) <= 0f)
						{
							((EnemyAI)__instance).SwitchToBehaviourState(0);
						}
					}
				}
				else
				{
					noPlayersToChaseTimer.SetValue(__instance, 5f);
				}
				break;
			}
			EnemyAIPatch.Update((EnemyAI)(object)__instance);
			return false;
		}
	}
}